Red Coins API é uma API de autenticação de usuário e operação de compra/venda de cripto moedas.
Objetivo: desafio técnico Red Ventures.
Ferramentas: Golang | Docker | Docker-compose
É necessário a instalação prévia do Docker e do Docker-compose
Obs.: As seguintes instruções foram testadas na distribuição do Ubuntu 18.04 Bionic
1 - Depois de clonar o repositório 'git clone' (comando), execute os seguintes comandos para criar as imagens docker "redcoins-api", "mysqldb" e "swagger-ui":
- user@user:~/diretorio_projeto_clonado/$ docker-compose up -d
- certifique-se se as portas :8000, :8001 e :3306 estão liberadas
- acessa red-coins-api http://localhost:8000
- acessa swagger interface http://localhost:8001
2 - Execução dos testes unitários
- use@user:~/diretorio_projeto_clonado/ go test ./... -v
Ação | Requerido | Role | Método | URL |
---|---|---|---|---|
AUTENTICAR USUÁRIO | POST |
/api/v1/users/login | ||
CRIAR USUÁRIO | POST |
/api/v1/users/signup | ||
CRIAR OPERAÇÃO | Autenticar | User | POST |
/api/v1/operations |
BUSCAR OPERAÇÕES | Autenticar | User/Admin | GET |
/api/v1/operations |
BUSCAR OPERAÇÕES | Autenticar | Admin | POST |
/api/v1/operations/email |
BUSCAR OPERAÇÕES | Autenticar | Admin | GET |
/api/v1/operations/date/{date} |
BUSCAR OPERAÇÕES | Autenticar | Admin | GET |
/api/v1/operations/name/{name} |
- REQUISIÇÃO
POST /api/v1/users/login
{
"email": "user@gmail.com",
"password": "user123"
}
- RESPOSTA
{
"code": "200",
"token": "eyJhbGciOiJI..."
}
- REQUISIÇÃO
POST /api/v1/users/signup
{
"name": "User test",
"email": "user@gmail.com",
"password": "user123",
"confirm_password": "user123",
"secret": "" // Para criação de usuário Admin
}
- RESPOSTA
{
"code": "201",
"message": "User registered with success."
}
- REQUISIÇÃO
POST /api/v1/operations
{
"operation_type": "purchase", // purchase ou sale
"amount": "150",
}
- RESPOSTA
{
"code": "200",
"message": "Operation successfully performed."
}
- REQUISIÇÃO
GET /api/v1/operations
- RESPOSTA
{
"code": "200",
"operations": [
{
...
},
]
}
- REQUISIÇÃO
GET /api/v1/operations/date/{date}
- RESPOSTA
{
"code": "200",
"operations": [
{
...
},
]
}
- REQUISIÇÃO
GET /api/v1/operations/name/{name}
- RESPOSTA
{
"code": "200",
"operations": [
{
...
},
]
}
- REQUISIÇÃO
POST /api/v1/operations/email
{
"email": "admin@gmail.com",
}
- RESPOSTA
{
"code": "200",
"operations": [
{
...
},
]
}
- Thiago Luiz Pereira Nunes (ThiagoLuizNunes) thiagoluiz.dev@gmail.com
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes
Criado por ThiagoLuizNunes 2019.