Skip to content

API desenvolvida em Golang com operações de transação de Bitcoin

Notifications You must be signed in to change notification settings

rteles86/RedCoinAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RedCoinApi

O repositório RedCoinApi contém as operações para viabilizar as transações de compra e venda de bitcoins.

Sobre o desenvolvimento do projeto

A versão inicial da RedCoinApi conta com as seguintes entidades para satisfazer as operações de Compra e venda de bitcoins:

  • ClienteApi - Representa os clientes que tem acesso aos métodos da API.
  • Usuario - Representa os usuários que realizam a operação de compra e venda de bitcoins.
  • PerfilUsuario - Representa a categoria do Usuario, se ele é vendedor, comprador ou ambos.
  • Operacao - Representa as movimentações de compra e venda dos bitcoins.
  • TipoOperacao - Representa o tipo da movimentação que o Usuario está realizando.

Utilização do Redis

A fim de Otimizar o desempenho das operações de compra e venda de BitCoin, é utilizado o banco de dados Redis, para gravar em cache-server a cotação dos Bitcoins.
Como funciona:
  1. A regra para a precificação dos Bitcoins, é que seja atualizada a cotação de preço de 1 em 1 hora;
  2. Dessa forma, a "primeira" consulta da cotação de preço de bitcoins é armazenada no Redis, com o prazo de expiração de 50 minutos;
  3. Enquanto o valor estiver válido no cache do Redis, as operações não realizam a consulta da API para precificação de Bitcoin.

Instalando a RedCoinApi

Para o funcionamento da RedCoinApi serão necessários os seguintes requisitos:

  • Docker - 19.03
  • Docker-Compose - 19.03
  • golang - 13.5
  • MySql Workbench ou similar (para rodar o script de migration)

Portas utilizadas

  • MySql - 1805
  • Redis - 6372
  • RedCoinApi - 2801

Siga os seguintes passos:

  1. Clone o repositório RedCoinApi
  2. Abra o terminal de comando de seu sistema operacional. Ex: MS-DOS (Windows) ou TERMINAL - MacOS
  3. Navegue até o diretório do repositório RedCoinApi "./Instalacao/docker-compose"
       - Execute o seguinte comando: docker-compose up -d
  4. Navegue até o diretório do repositório RedCoinApi "./API"
       - Execute o seguinte comando: docker build -t redcoin .
  5. Execute a imagem da RedCoinApi
       - Execute o seguinte comando: docker run -d -p 2801:2801 --name apiredcoin redcoin
  6. Execute o arquivo de migration
       Navegue até o diretório "./Instalacao/migration"
       Execute o script na instância do MySql criada após a execução do "docker-compose/mysql"

Exemplo de consumo dos Endpoints RedCoinApi

Após a instalação da RedCoinApi, recomendo a utilização da ferramenta Postman, para realizar os testes e consumo dos Endpoints.

Adicionar Cliente Api

      Descrição: Realiza o cadastro de um novo cliente da RedCoinApi
      URL: http://localhost:2801/autenticacao/adicionar
      Tipo: POST
      Parâmetros Body:
      {
         "usuario":"redcoinApi"
         ,"senha":"redcoinApi@@"
      }

Autenticar Cliente Api

      Descrição: Verifica se as credenciais do cliente da RedCoinApi são válidas
      URL: http://localhost:2801/autenticacao
      Tipo: POST
      Parâmetros Body:
      {
         "usuario":"redcoinApi"
         ,"senha":"redcoinApi@@"
      }

Listar Todos Perfil

      Descrição: Lista de todos os Perfil cadastrados
      URL: http://localhost:2801/api/perfil/todos
      Tipo: GET

Perfil Id

      Descrição: Retorna o Perfil cadastrado de acordo com o ID
      URL: http://localhost:2801/api/perfil/id
      Tipo: GET
      Parâmetros: ?id=1

Perfil Adicionar

      Descrição: Realiza o cadastro de um novo Perfil
      URL: http://localhost:2801/api/perfil/adicionar
      Tipo: POST
      Parâmetros Body:
      {
         "perfil":"Comprador"
      }

Perfil Alterar

      Descrição: Altera o registro de um Perfil
      URL: http://localhost:2801/api/perfil/alterar
      Tipo: PUT
      Parâmetros Body:
      {
         "id":1
         ,"perfil":"Corretor"
      }

Listar Todos TipoOperacao

      Descrição: Lista de todos os TipoOperacao cadastrados
      URL: http://localhost:2801/api/tipo-operacao/todos
      Tipo: GET

TipoOperacao Id

      Descrição: Retorna o TipoOperacao cadastrado de acordo com o ID
      URL: http://localhost:2801/api/tipo-operacao/id
      Tipo: GET
      Parâmetros: ?id=1

TipoOperacao Adicionar

      Descrição: Realiza o cadastro de um novo TipoOperacao
      URL: http://localhost:2801/api/tipo-operacao/adicionar
      Tipo: POST
      Parâmetros Body:
      {
         "operacao":"Venda"
      }

TipoOperacao Alterar

      Descrição: Altera o registro de um TipoOperacao
      URL: http://localhost:2801/api/tipo-operacao/alterar
      Tipo: PUT
      Parâmetros Body:
      {
         "id":1
         ,"operacao":"Compra"
      }

Listar Todos Usuario

      Descrição: Lista de todos os Usuario cadastrados
      URL: http://localhost:2801/api/usuario/todos
      Tipo: GET

Usuario Id

      Descrição: Retorna o Usuario cadastrado de acordo com o ID
      URL: http://localhost:2801/api/usuario/id?id={valor}
      Tipo: GET
      Parâmetros: ?id=1

Usuario Adicionar

      Descrição: Realiza o cadastro de um novo Usuario
      URL: http://localhost:2801/api/usuario/adicionar
      Tipo: POST
      Parâmetros Body:
      {
         "email": "redcoinapi@redcoinapi.com",
         "senha": "123Mudar",
         "nome": "Red Coin",
         "ultimoNome": "Api",
         "nascimento": "2019-12-22T00:00:00Z",
         "quantidadeMoeda": 0,
         "perfil": [
            {
            "id": 1,
            "perfil": "Comprador"
            }
         ]
         }

Usuario Alterar

      Descrição: Altera o registro de um Usuario
      URL: http://localhost:2801/api/usuario/alterar
      Tipo: PUT
      Parâmetros Body:
      {
         "id": 1,
         "email": "redcoinapi@redcoinapi.com",
         "senha": "123Mudar",
         "nome": "Red Coin",
         "ultimoNome": "Api",
         "nascimento": "2019-12-22T00:00:00Z",
         "quantidadeMoeda": 0,
         "perfil": [
            {
            "id": 2,
            "perfil": "Vendedor"
            }
         ]
         }

Operacao Email

      Descrição: Lista todas as transações de um Usuario a partir de seu Email
      URL: http://localhost:2801/api/operacao/email?email={valor}
      Tipo: GET
      Parâmetros: ?email=redcoinapi@redcoinapi.com

Operacao Data

      Descrição: Lista todas as transações registradas em uma determinada data
      URL: http://localhost:2801/api/operacao/data?data={valor}
      Tipo: GET
      Parâmetros: ?data=2019-12-22

Operacao Gravar

      Descrição: Retorna o Perfil cadastrado de acordo com o ID
      URL: http://localhost:2801/api/operacao/gravar
      Tipo: POST
      Parâmetros body:
      {
         "idTipo": 1,
         "idVendedor": 2,
         "idComprador": 2,
         "DataOperacao": "2019-12-22T01:56:32Z",
         "ValorMoeda": 14717.366,
         "ValorBitCoin": 0.10
      }

About

API desenvolvida em Golang com operações de transação de Bitcoin

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages