BattleMetrics.API

Este projeto é, essencialmente, um endpoint adaptador da API do BattleMetrics.

Para permitir que o código fique mais bem compartimentalizado, com um controller mais simples e que esconde as principais operações, escondidas no service, foi usada uma arquitetura baseada (porém com adaptações) no repository pattern. Naturalmente, a principal diferença é que interpretou-se que não há necessidade de persistir quaisquer dados em banco, dispensando o módulo de repositório em si e toda a camada de acesso ao banco de dados. A chamada à API do BattleMetrics é feita com um IHttpClientFactory com as configurações padrão, que parece suficiente para a tarefa. Os dados do JSON de entrada são desserializados em um objeto auxiliar denominado ResponseDTO. Ele é necessário, pois a resposta da API do BattleMetrics contem outras propriedades, além dos atributos, que são os dados de interesse, chegarem contidos num outro objeto. A operação de desserialização é feita com o JsonSerializer da biblioteca padrão da linguagem (System.Text.Json). Para simular a paginação direta por índice pedida, há um laço externo que verifica se a página atual é a buscada. Se for, o laço para e lê os dados de atributos presentes na propriedade data, representada como uma lista, são lidos e copiados para um segundo DTO, GetServersWithDetailsByGameId. Uma lista deste DTO é, então, retornada dentro de um objeto Response, que também contém um código de status. A combinação do código de status com a lista de DTOs com os atributos exigidos é o retorno do endpoint.

Como não há uso de quaisquer bibliotecas adicionais ao Asp.Net Core, não há instruções de instalação adicionais. É sugerido que o código seja puxado e executado no Visual Studio Community 2022.