O repositório RedCoinApi contém as operações para viabilizar as transações de compra e venda de bitcoins.
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.
Como funciona:
- A regra para a precificação dos Bitcoins, é que seja atualizada a cotação de preço de 1 em 1 hora;
- 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;
- 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.
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:
- Clone o repositório RedCoinApi
- Abra o terminal de comando de seu sistema operacional. Ex: MS-DOS (Windows) ou TERMINAL - MacOS
-
Navegue até o diretório do repositório RedCoinApi "./Instalacao/docker-compose"
- Execute o seguinte comando: docker-compose up -d -
Navegue até o diretório do repositório RedCoinApi "./API"
- Execute o seguinte comando: docker build -t redcoin . -
Execute a imagem da RedCoinApi
- Execute o seguinte comando: docker run -d -p 2801:2801 --name apiredcoin redcoin -
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"
Após a instalação da RedCoinApi, recomendo a utilização da ferramenta Postman, para realizar os testes e consumo dos Endpoints.
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@@"
}
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@@"
}
Descrição: Lista de todos os Perfil cadastrados
URL: http://localhost:2801/api/perfil/todos
Tipo: GET
Descrição: Retorna o Perfil cadastrado de acordo com o ID
URL: http://localhost:2801/api/perfil/id
Tipo: GET
Parâmetros: ?id=1
Descrição: Realiza o cadastro de um novo Perfil
URL: http://localhost:2801/api/perfil/adicionar
Tipo: POST
Parâmetros Body:
{
"perfil":"Comprador"
}
Descrição: Altera o registro de um Perfil
URL: http://localhost:2801/api/perfil/alterar
Tipo: PUT
Parâmetros Body:
{
"id":1
,"perfil":"Corretor"
}
Descrição: Lista de todos os TipoOperacao cadastrados
URL: http://localhost:2801/api/tipo-operacao/todos
Tipo: GET
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
Descrição: Realiza o cadastro de um novo TipoOperacao
URL: http://localhost:2801/api/tipo-operacao/adicionar
Tipo: POST
Parâmetros Body:
{
"operacao":"Venda"
}
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"
}
Descrição: Lista de todos os Usuario cadastrados
URL: http://localhost:2801/api/usuario/todos
Tipo: GET
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
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"
}
]
}
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"
}
]
}
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
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
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
}