예제 #1
0
        public async Task <AkinatorQuestion> Answer(AnswerOptions answer, CancellationToken cancellationToken = default)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var url = AkiUrlBuilder.Answer(BuildAnswerRequest(answer), _mServer);

            var response = await _mWebClient.GetAsync(url, cancellationToken).ConfigureAwait(false);

            var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            var result = EnsureNoError <Question>(url, content);

            _mStep          = result.Step;
            CurrentQuestion = ToAkinatorQuestion(result);
            return(CurrentQuestion);
        }
예제 #2
0
        public async Task <AkinatorQuestion> Answer(AnswerOptions answer, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var url = AkiUrlBuilder.Answer(BuildAnswerRequest(answer), m_usedLanguage, m_usedServerType);

            var response = await m_webClient.GetAsync(url, cancellationToken).ConfigureAwait(false);

            var content = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <BaseResponse <Question> >(content,
                                                                                  new JsonSerializerSettings()
            {
                MissingMemberHandling = MissingMemberHandling.Ignore
            });

            m_step = result.Parameters.Step;
            return(ToAkinatorQuestion(result.Parameters));
        }