[JAVA] A QuakLog é uma API para importação de arquivos de LOG do jogo Quake
A QuakLog
é um serviço para importação de arquivos de log
do jogo Quake
.
Uma vez que o arquivo de log
é importado ele é transformado em dados legíveis sobre
as diversas partidas registradas pelo jogo, após a transformação ser realizada o documento
referente a cada partida
ganha uma chave e é registrada em um banco de dados NoSQL
para que
seja permitido posteriormente realizar consultas mais detalhadas.
Java/OpenJDK 11
- Java Development Kit 11Spring boot
- Framework base para a APIMongoDB
- Base de dados não relacionalSwagger
- Documentação de API de forma dinâmicaCaffeine
- Biblioteca de cacheDocker
- Executa e gerencia aplicações dentro de invólucros chamados containersjUnit5 e Mockito
- Execução de testesA arquitetura utilizada nesse projeto foi baseada na Clean Architecture
porém mais flexível,
apenas com duas camadas, deixando a core
totalmente isolada e livre de dependência de frameworks.
A QuakLog
disponibiliza os seguintes endpoints
em sua API
Endpoint para realizar a importação do arquivo de LOG do jogo.
PATH: POST /game
Headers:
multipart/form-data
{logFileDate}
logFileDate
: 2019-12-07
Body:
Exemplo - curl
curl -X POST "http://localhost:8080/game" -H "accept: */*" -H "Log-File-Date: 2019-01-01" -H "Content-Type: multipart/form-data" -F "[email protected];type=text/x-log"
201
)
{
"gamesIds": [
"5d80e7a3-1e36-4692-8645-14768cd5b0cd",
"493b3438-6c3b-4353-8807-7d044531cd9e"
],
"notifications": [
"1 - KEY not found to parse { 0:00 }",
"3 - KEY not found to parse { 15:00 Exit: Timelimit hit.}"
]
}
Endpoint para realizar a consulta dos jogos de maneira simplificada do arquivo importado.
PATH: GET /game/date/{gameDate}
date
: 2019-12-07
Exemplo - curl
curl -X GET "http://localhost:8080/game/date/2019-01-01" -H "accept: */*"
200
)Body Sample:
{
"games":[
"2094f7e5-2f61-40b6-b5a2-a99c72b506c8": {
"players": [
{
"id": 2,
"name": "Dono da Bola",
"kills": 13
},
{
"id": 3,
"name": "Isgalamido",
"kills": 19
}
],
"total_kills": 105,
"detail_path": "/game/2094f7e5-2f61-40b6-b5a2-a99c72b506c8"
},
// [n...]
]
"quantity":10
}
Endpoint para consultar um jogo específico de maneira detalhada.
PATH: GET /game/{UUID}
Exemplo - curl
curl -X GET "http://localhost:8080/game/7fd1a01f-4afb-49a5-b8f5-f7f790c247e4" -H "accept: */*"
200
)
Os seguintes passos foram documentados para serem executados em uma plataforma
Linux
, porém os comandos com o sistema Windows
podem ser semelhantes, mas,
o funcionamento não é totalmente garantido.
Certifique-se que você tenha as seguintes ferramentas instaladas:
Efetue o clone do projeto pelo Git
:
$git clone https://github.com/gbzarelli/quaklog-api.git
$cd ./quaklog-api
Gradle Build Tools
o clean
e o build
do projeto. O build
executará os testes unitários para garantir a integridade do projeto e irá gerar o executável (.jar
) do mesmo.$./gradlew clean build
build
do Dockerfile
gerando uma imagem
no repositório local denominada de helpdev/quaklog-api
.$docker build -t helpdev/quaklog-api .
docker-compose
. O compose
irá preparar todo ambiente necessário para sua aplicação executar.$docker-compose up
8080
A Swagger UI
fornece uma estrutura de exibição que é capaz de interpretar os endpoints
do projeto
e gera um site de documentação interativa
Guilherme Biff Zarelli