Пример #1
0
        public async Task <GetRandomQuizQuestionResponse> Handle(GetRandomQuizQuestionRequest request, CancellationToken cancellationToken)
        {
            OpenTdbRequest openTdbRequest = new OpenTdbRequest
            {
                NumberOfQuestionsToGenerate = 1
            };
            var openTdbResponse = await _openTdbClient.GetQuestions(openTdbRequest);

            var response = FormRandomQuizQuestionResponseFromOpenTdbResponse(openTdbResponse);

            return(response);
        }
Пример #2
0
 private void AssembleQueryString(OpenTdbRequest request)
 {
     if (request.Category != Categories.AnyCategory)
     {
         _queryString += "&category=" + (int)request.Category;
     }
     if (request.Difficulty != Difficulties.Any)
     {
         _queryString += "&difficulty=" + request.Difficulty.ToString();
     }
     if (request.Type != QuestionTypes.Any)
     {
         _queryString += "&type=" + request.Type.ToString();
     }
 }
Пример #3
0
        public async Task <OpenTdbResponse> GetQuestions(OpenTdbRequest request)
        {
            var response = new OpenTdbResponse();

            _queryString = "?amount=" + request.NumberOfQuestionsToGenerate;

            AssembleQueryString(request);

            try
            {
                var httpResponse = await _client.GetAsync(_queryString);

                if (httpResponse.IsSuccessStatusCode)
                {
                    response.ReasonPhrase = httpResponse.ReasonPhrase;
                    response.StatusCode   = httpResponse.StatusCode;

                    var responseContent = await httpResponse.Content.ReadAsStringAsync();

                    var quizQuestionsAsJsonObject = PrepareTextForJsonObjectification(responseContent);
                    response.QuizQuestions = MapJsonToQuizQuestions(quizQuestionsAsJsonObject);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Exception: " + ex.ToString());

                response.QuizQuestions.Add(
                    new QuizQuestionDto
                {
                    Question = "Could not find a question... Please refresh to try again."
                });
            }

            return(response);
        }