コード例 #1
0
        private async Task RetrySendRequest(int times, QnAResponseDto response)
        {
            var operation = response.Headers.GetValues(LOCATION).First();

            var done    = false;
            var retries = 0;

            while (true != done && retries < times)
            {
                var uri = QnAHost + QnAService + operation;

                response = await MakeJsonRequestAndGetResponse(uri);

                var responseState = JsonConvert.DeserializeObject <QnAResponseDto>(response.Message);

                string state = responseState.operationState;

                if (state.CompareTo(RUNNING) == 0 || state.CompareTo(NOT_START) == 0)
                {
                    var wait = response.Headers.GetValues(RETRY_AFTER).First();

                    _loggerManager.Info("Waiting " + wait + " seconds...");

                    Thread.Sleep(Int32.Parse(wait) * 1000);
                }
                else
                {
                    done = true;
                    _loggerManager.Info(string.Format("Request sent successfully after  retrying {0} times", retries));
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Check response If success, if not log it
        /// </summary>
        /// <param name="jsonStr">request Json String</param>
        /// <param name="logger">Logger</param>
        /// <returns>Is Success or Not</returns>
        private bool CheckResponse(QnAResponseDto response)
        {
            var responseData = JsonConvert.DeserializeObject <QnAResponseDto>(response.Message);

            if (responseData == null || responseData.error == null)
            {
                return(true);
            }
            _loggerManager.Info("Error while Checking Response - " + response.error);
            return(false);
        }