System.Net.Cache.Rfc2616.Common.ConstructConditionalRequest C# (CSharp) Method

ConstructConditionalRequest() public static method

public static ConstructConditionalRequest ( HttpRequestCacheValidator ctx ) : CacheValidationStatus
ctx HttpRequestCacheValidator
return CacheValidationStatus
            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;
            }