public async Task <IActionResult> GetShakespearianDescription([FromRoute] GetShakespearianDescriptionRequest request)
        {
            var validationResult = request.Validate();

            if (!validationResult.Success)
            {
                return(this.BadRequest(validationResult));
            }

            try
            {
                string description = await this.pokemonDescriptionProvider.GetShakesperianDescription(request.Name, request.Version);

                var response = new GetShakespearianDescriptionResponse(request.Name, description);

                return(this.Ok(response));
            }
            catch (Exception e) when(e is PokemonNotFoundException || e is DescriptionForVersionNotFoundException)
            {
                return(this.NotFound(ValidationResult.Failed(e.Message)));
            }
        }