public CacheResponse(IResponse response) { response.ThrowIfNull("response"); _statusCode = response.StatusCode; _contentType = response.ContentType; _charset = response.Charset ?? DefaultCharset; _contentEncoding = response.ContentEncoding ?? _defaultContentEncoding; _headers = response.Headers.Select(arg => arg.Clone()).ToArray(); _headerEncoding = response.HeaderEncoding ?? _defaultHeaderEncoding; _cookies = response.Cookies.Select(arg => arg.Clone()).ToArray(); _cachePolicy = response.CachePolicy.Clone(); _content = response.GetContent(); }
public CacheResponse(IResponse response) { response.ThrowIfNull("response"); _statusCode = response.StatusCode; _contentType = response.ContentType; _charset = response.Charset ?? DefaultCharset; _contentEncoding = response.ContentEncoding ?? _defaultContentEncoding; _headers = response.Headers.Select(arg => arg.Clone()).ToArray(); _headerEncoding = response.HeaderEncoding ?? _defaultHeaderEncoding; _cookies = response.Cookies.Select(arg => arg.Clone()).ToArray(); _cachePolicy = response.CachePolicy.Clone(); _skipIisCustomErrors = response.SkipIisCustomErrors; _content = new AsyncLazy<byte[]>(() => response.GetContentAsync()); }
public CacheResponse(IResponse response) { response.ThrowIfNull("response"); _statusCode = response.StatusCode; _contentType = response.ContentType; _charset = response.Charset ?? DefaultCharset; _contentEncoding = response.ContentEncoding ?? _defaultContentEncoding; _headers = response.Headers.Select(arg => arg.Clone()).ToArray(); _headerEncoding = response.HeaderEncoding ?? _defaultHeaderEncoding; _cookies = response.Cookies.Select(arg => arg.Clone()).ToArray(); _cachePolicy = response.CachePolicy.Clone(); _skipIisCustomErrors = response.SkipIisCustomErrors; _content = new AsyncLazy <byte[]>(() => response.GetContentAsync()); }
public async Task <ResponseHandlerResult> HandleResponseAsync(HttpContextBase context, IResponse suggestedResponse, ICache cache, string cacheKey) { context.ThrowIfNull("context"); suggestedResponse.ThrowIfNull("suggestedResponse"); StatusAndSubStatusCode statusCode = suggestedResponse.StatusCode; if (!_statusCodes.Contains(statusCode)) { return(ResponseHandlerResult.ResponseNotHandled()); } AcceptHeader[] acceptHeaders = AcceptHeader.ParseMany(context.Request.Headers["Accept"]).ToArray(); if (acceptHeaders.Any() && !acceptHeaders.Any(arg => arg.MediaTypeMatches("text/html"))) { return(ResponseHandlerResult.ResponseNotHandled()); } const string format = @"<!DOCTYPE html> <html> <head> <title>{0}</title> <style>h1 {{ margin: 0; padding: 0; }}</style> </head> <body> <h1>{0}</h1> <hr/> HTTP {1}{2} </body> </html>"; Response response = new Response(statusCode) .TextHtml() .Content(String.Format(format, statusCode.StatusDescription, statusCode.StatusCode, statusCode.SubStatusCode == 0 ? "" : "." + statusCode.SubStatusCode)); response.CachePolicy.NoClientCaching(); await new CacheResponse(response).WriteResponseAsync(context.Response); context.Response.TrySkipIisCustomErrors = true; return(ResponseHandlerResult.ResponseWritten()); }
public async Task <ResponseHandlerResult> HandleResponseAsync(HttpContextBase context, IResponse suggestedResponse, ICache cache, string cacheKey) { context.ThrowIfNull("context"); suggestedResponse.ThrowIfNull("suggestedResponse"); StatusAndSubStatusCode statusCode = suggestedResponse.StatusCode; if (!_statusCodes.Contains(statusCode)) { return(ResponseHandlerResult.ResponseNotHandled()); } AcceptHeader[] acceptHeaders = AcceptHeader.ParseMany(context.Request.Headers["Accept"]).ToArray(); if (acceptHeaders.Any() && !acceptHeaders.Any(arg => arg.MediaTypeMatches("text/plain"))) { return(ResponseHandlerResult.ResponseNotHandled()); } string content = String.Format( "HTTP {0}{1} {2}", statusCode.StatusCode, statusCode.SubStatusCode == 0 ? "" : "." + statusCode.SubStatusCode.ToString(CultureInfo.InvariantCulture), statusCode.StatusDescription.Length > 0 ? String.Format("({0})", statusCode.StatusDescription) : ""); Response response = new Response(statusCode) .TextPlain() .Content(content); response.CachePolicy.NoClientCaching(); await new CacheResponse(response).WriteResponseAsync(context.Response); context.Response.TrySkipIisCustomErrors = true; return(ResponseHandlerResult.ResponseWritten()); }
public void SetUp() { _statusAndSubStatusCode = new StatusAndSubStatusCode(201, 1); }
public void SetUp() { _statusAndSubStatusCode = new StatusAndSubStatusCode(HttpStatusCode.Created, 1); }
public Response(StatusAndSubStatusCode statusCode) { _statusCode = statusCode; }
public Response StatusCode(HttpStatusCode statusCode, int subStatusCode = 0) { _statusCode = new StatusAndSubStatusCode(statusCode, subStatusCode); return this; }
public Response StatusCode(StatusAndSubStatusCode statusCode) { statusCode.ThrowIfNull("statusCode"); _statusCode = statusCode; return this; }