/// <summary> /// Get Pokemon details and translate as required /// </summary> /// <param name="name">Pokemon Name</param> /// <returns></returns> public async Task <Model.Pokemonsieur> GetDetailsAndTranslateAsync(string name) { _logger.LogInformation("Calling PokeAPI..."); var error = new Error(); PokemonDetails pokemonDetails = await _pokemonService.GetPokemonDetailsAsync(name); if (pokemonDetails.Error is null) { _logger.LogInformation("Calling TranslationAPI..."); Translation translation = await _translationService.GetTranslationAsync(pokemonDetails.Description); if (translation.Error is null) { return(new Model.Pokemonsieur { Name = pokemonDetails.Name, Description = translation.Contents.Translated }); } error = translation.Error; } else { error = pokemonDetails.Error; } return(new Model.Pokemonsieur { Error = GetErrorDetails(error.Code) }); }
// GET api/Pokemon //public List<PokemonDetails> Get() //{ // pokemonfulldetails sdList = new pokemonfulldetails(); // return sdList.pokemonDetails; //} //// GET api/Pokemon/5 //public string Get(int id) //{ // return "value"; //} //// POST api/Pokemon //public void Post([FromBody] string value) //{ //} //// PUT api/Pokemon/5 //public void Put(int id, [FromBody] string value) //{ //} //// DELETE api/Pokemon/5 //public void Delete(int id) //{ //} public PokemonDetails Get() { using (var w = new WebClient()) { String raw = w.DownloadString("https://pokeapi.co/api/v2/pokemon/2/"); PokemonDetails poke = JsonConvert.DeserializeObject <PokemonDetails>(raw); return(poke); } }
public static async Task <JsonResult> getTranslatedDescription(string pokemonName) { PokemonSpecies p; try { p = await DataFetcher.GetNamedApiObject <PokemonSpecies>(pokemonName); } catch (HttpRequestException) { return(new JsonResult(ErrorMessage.pokeMonNotFoundOrUnAvailable) { StatusCode = StatusCodes.Status404NotFound }); } catch (PokemonParseException ex) { return(new JsonResult(ex.Message) { StatusCode = StatusCodes.Status500InternalServerError }); } try { string description = Array.Find(p.FlavorTexts, element => element.Language.Name == "en").FlavorText; JsonResult shakespeareResult = await ShakespeareClient.getShakespeareTranslated(description); if (shakespeareResult.StatusCode == StatusCodes.Status429TooManyRequests) { return(new JsonResult(ErrorMessage.tooManyRequest) { StatusCode = StatusCodes.Status429TooManyRequests }); } PokemonDetails pDetails = new PokemonDetails() { Name = p.Name, Description = shakespeareResult.Value.ToString() }; return(new JsonResult(pDetails) { StatusCode = StatusCodes.Status200OK // Status code here }); } catch (Exception ex) { return(new JsonResult(ex.Message) { StatusCode = StatusCodes.Status500InternalServerError // Status code here }); } }
public async Task TestPokemonDetailsAPI() { var controller = new PokemonDetailsController(); var response = await controller.Get(pokemonName); Assert.IsNotNull(response); if (response.StatusCode == StatusCodes.Status429TooManyRequests) { Assert.AreEqual(response.Value, ErrorMessage.tooManyRequest); } else { PokemonDetails pokemonDetails = response.Value as PokemonDetails; Assert.IsNotNull(pokemonDetails); Assert.IsNotNull(pokemonDetails.Description); Assert.AreEqual(pokemonDetails.Name, pokemonName); } }