Пример #1
0
        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();
        }
Пример #2
0
		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());
		}
Пример #3
0
        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());
        }
Пример #6
0
 public void SetUp()
 {
     _statusAndSubStatusCode = new StatusAndSubStatusCode(201, 1);
 }
Пример #7
0
 public void SetUp()
 {
     _statusAndSubStatusCode = new StatusAndSubStatusCode(HttpStatusCode.Created, 1);
 }
Пример #8
0
 public Response(StatusAndSubStatusCode statusCode)
 {
     _statusCode = statusCode;
 }
Пример #9
0
        public Response StatusCode(HttpStatusCode statusCode, int subStatusCode = 0)
        {
            _statusCode = new StatusAndSubStatusCode(statusCode, subStatusCode);

            return this;
        }
Пример #10
0
        public Response StatusCode(StatusAndSubStatusCode statusCode)
        {
            statusCode.ThrowIfNull("statusCode");

            _statusCode = statusCode;

            return this;
        }
 public void SetUp()
 {
     _statusAndSubStatusCode = new StatusAndSubStatusCode(HttpStatusCode.Created, 1);
 }
 public void SetUp()
 {
     _statusAndSubStatusCode = new StatusAndSubStatusCode(201, 1);
 }