using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using PokeApiNet; using Pokespearean.Models.Generic; using Pokespearean.Models.Pokemon; using System; using System.Linq; using System.Threading.Tasks; namespace Pokespearean.Controllers { [ApiController] [Route("[controller]")] public class PokemonController : ControllerBase { private readonly ILogger _logger; public PokemonController(ILogger logger) { _logger = logger; } [Route("{pokemon}")] public async Task Get([FromRoute] string pokemon = "ho-oh") { var result = new WebResult(); try { var client = new PokeApiClient(); var pokedex = await client.GetResourceAsync(pokemon); return Ok(new PokeResult { Name = pokedex.Name, Description = pokedex.Descriptions.FirstOrDefault(d => d.Language.Name == "en").Description }); } catch (Exception ex) { return BadRequest(result.Invalidate(ex.Message, ex)); } } } }