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)); } } }
/// <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); }