public GetResponse[] HandleCachingResponse(GetResponse[] responses, HttpJsonRequestFactory jsonRequestFactory) { var hasCachedRequests = false; var requestStatuses = new RequestStatus[responses.Length]; for (int i = 0; i < responses.Length; i++) { if (responses[i] == null || responses[i].Status == 304) { hasCachedRequests = true; requestStatuses[i] = responses[i] == null ? RequestStatus.AggressivelyCached : RequestStatus.Cached; responses[i] = responses[i] ?? new GetResponse { Status = 0 }; foreach (string header in cachedData[i].Headers) { cachedData[i].Time = SystemTime.UtcNow; responses[i].Headers[header] = cachedData[i].Headers[header]; } responses[i].Result = cachedData[i].Data.CloneToken(); jsonRequestFactory.IncrementCachedRequests(); } else { requestStatuses[i] = responses[i].RequestHasErrors() ? RequestStatus.ErrorOnServer : RequestStatus.SentToServer; var nameValueCollection = new NameValueCollection(); foreach (var header in responses[i].Headers) { nameValueCollection[header.Key] = header.Value; } jsonRequestFactory.CacheResponse(url + requests[i].UrlAndQuery, responses[i].Result, nameValueCollection); } } if (hasCachedRequests == false || convention.DisableProfiling || holdProfilingInformation.ProfilingInformation.Requests.Count == 0) { return(responses); } var lastRequest = holdProfilingInformation.ProfilingInformation.Requests.Last(); for (int i = 0; i < requestStatuses.Length; i++) { lastRequest.AdditionalInformation["NestedRequestStatus-" + i] = requestStatuses[i].ToString(); } lastRequest.Result = JsonConvert.SerializeObject(responses); return(responses); }
public GetResponse[] HandleCachingResponse(GetResponse[] responses, HttpJsonRequestFactory jsonRequestFactory) { var hasCachedRequests = false; var requestStatuses = new RequestStatus[responses.Length]; for (int i = 0; i < responses.Length; i++) { if (responses[i] == null || responses[i].Status == 304) { hasCachedRequests = true; requestStatuses[i] = responses[i] == null ? RequestStatus.AggressivelyCached : RequestStatus.Cached; responses[i] = responses[i] ?? new GetResponse { Status = 0 }; foreach (string header in cachedData[i].Headers) { responses[i].Headers[header] = cachedData[i].Headers[header]; } responses[i].Result = cachedData[i].Data.CloneToken(); jsonRequestFactory.IncrementCachedRequests(); } else { requestStatuses[i] = responses[i].RequestHasErrors() ? RequestStatus.ErrorOnServer : RequestStatus.SentToServer; var nameValueCollection = new NameValueCollection(); foreach (var header in responses[i].Headers) { nameValueCollection[header.Key] = header.Value; } jsonRequestFactory.CacheResponse(url + requests[i].UrlAndQuery, responses[i].Result, nameValueCollection); } } if (hasCachedRequests == false || convention.DisableProfiling || holdProfilingInformation.ProfilingInformation.Requests.Count == 0) return responses; var lastRequest = holdProfilingInformation.ProfilingInformation.Requests.Last(); for (int i = 0; i < requestStatuses.Length; i++) { lastRequest.AdditionalInformation["NestedRequestStatus-" + i] = requestStatuses[i].ToString(); } lastRequest.Result = JsonConvert.SerializeObject(responses); return responses; }