Ejemplo n.º 1
0
        /// <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)
            });
        }
Ejemplo n.º 2
0
        // 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);
            }
        }