public static CacheValidationStatus ConstructConditionalRequest(HttpRequestCacheValidator ctx) {
CacheValidationStatus result = CacheValidationStatus.DoNotTakeFromCache;
// The assumption is that a _user_ conditional request was already filtered out
bool validator2 = false;
string str = ctx.CacheHeaders.ETag;
if (str != null) {
result = CacheValidationStatus.Continue;
ctx.Request.Headers[HttpKnownHeaderNames.IfNoneMatch] = str;
ctx.RequestIfHeader1 = HttpKnownHeaderNames.IfNoneMatch;
ctx.RequestValidator1 = str;
validator2 = true;
if(Logging.On)Logging.PrintInfo(Logging.RequestCache, SR.GetString(SR.net_log_cache_condition_if_none_match, ctx.Request.Headers[HttpKnownHeaderNames.IfNoneMatch]));
}
if (ctx.CacheEntry.LastModifiedUtc != DateTime.MinValue) {
result = CacheValidationStatus.Continue;
str = ctx.CacheEntry.LastModifiedUtc.ToString("r", CultureInfo.InvariantCulture);
ctx.Request.Headers.ChangeInternal(HttpKnownHeaderNames.IfModifiedSince, str);
if (validator2) {
ctx.RequestIfHeader2 = HttpKnownHeaderNames.IfModifiedSince;
ctx.RequestValidator2 = str;
}
else {
ctx.RequestIfHeader1 = HttpKnownHeaderNames.IfModifiedSince;
ctx.RequestValidator1 = str;
}
if(Logging.On)Logging.PrintInfo(Logging.RequestCache, SR.GetString(SR.net_log_cache_condition_if_modified_since, ctx.Request.Headers[HttpKnownHeaderNames.IfModifiedSince]));
}
if(Logging.On) {
if (result == CacheValidationStatus.DoNotTakeFromCache) {
Logging.PrintWarning(Logging.RequestCache, SR.GetString(SR.net_log_cache_cannot_construct_conditional_request));
}
}
return result;
}