API REST para uma aplicação ao estilo card game, onde serão informados dois filmes e o jogador deve acertar aquele que possui melhor avaliação no IMDB.
- O jogador deve fazer login para iniciar uma nova partida. Portanto, cada partida sempre será identificada pela autenticação do usuário.
- Não há restrições onde armazenar os usuários: em memória, ou em banco,etc.
- Cada rodada do jogo consiste em informar um par de filmes, observando para não repetir o mesmo par nem formar um par com um único filme.
- São sequências não-válidas: [A-A] o mesmo filme repetido; [A-B, A-B] pares repetidos – considere iguais os pares do tipo A-B e B-A.
- Os seguintes pares são válidos: [A-B,B-C] o filme B é usado em pares diferentes.
- O jogador deve tentar acertar qual filme possui maior pontuação, composta pela nota (0.0-10.0) multiplicado pelo total de votos.
- Se escolher o vencedor correto, conta 1 ponto. São permitidos até três erros. Após responder, terá acesso a novo par de filmes quando acessar o endpoint do quiz.
- Forneça endpoints específicos para iniciar e encerrar a partida a qualquer momento. Valide o momento em que cada funcionalidade pode ser acionada.
- Não deve ser possível avançar para o próximo par sem responder o atual.
- Deve existir uma funcionalidade de ranking, exibindo os melhores jogadores e suas pontuações.
- A pontuação é obtida multiplicando a quantidade de quizzes respondidos pela porcentagem de acerto.
- Armazene os dados em H2 e preencha todas as tabelas necessárias.
- Inicie os dados de sua aplicação usando webscraping ou a partir da API pública “http://www.omdbapi.com/” – levamos a sério que os dados sejam fidedignos.
- Explore os frameworks Spring: Web, Boot, Data, Security e Cloud.
- Linguagem: Java 11 ou 17
- Escreva testes unitários (para validar as regras de negócio) e de integração (para validar a API). Cobertura de testes mínima: 80% dos métodos.
- Não deixe de adicionar a documentação da API com base no OpenAPI3.0.
- Escolha a solução de autenticação que achar mais interessante. Crie pelo menos dois usuários/jogadores.