Esempio n. 1
0
        public ICompressedItemHandle Commit(ICompressedItemBuilder builder)
        {
            var           itemBuilder = (ItemBuilder)builder;
            CompressedKey key         = itemBuilder.Key;
            var           item        = new Item
            {
                PhysicalPath     = itemBuilder.PhysicalPath,
                CompressedLength = itemBuilder.Stream.Length
            };

            itemBuilder.Stream.Close();

            var handle = new ItemHandle(item);

            AddHandleInDictionary(key, handle);
            return(handle);
        }
Esempio n. 2
0
        public InterceptMode InterceptOnce()
        {
            string etag = _response.ETag;

            if (string.IsNullOrEmpty(etag))
            {
                return(InterceptMode.DoingNothing);
            }

            if (etag.StartsWith("\"", StringComparison.Ordinal) &&
                etag.EndsWith("\"", StringComparison.Ordinal))
            {
                _compressedETag = etag.Substring(0, etag.Length - 1) + "^" + _encoding.Name + "\"";
            }
            else
            {
                _compressedETag = "\"" + etag + "^" + _encoding.Name + "\"";
            }

            HttpStatusCode statusCode = (HttpStatusCode)_response.StatusCode;

            if (statusCode == HttpStatusCode.NotModified)
            {
                return(InterceptMode.SentFromStorage);
            }

            var key = new CompressedKey
            {
                ETag               = _compressedETag,
                RequestPath        = _request.Path.Value,
                RequestQueryString = _request.QueryString.Value,
                RequestMethod      = _request.Method,
            };

            _compressedItem = _storage.Open(key);
            if (_compressedItem != null)
            {
                return(InterceptMode.SentFromStorage);
            }

            _compressedItemBuilder = _storage.Create(key);
            _compressingStream     = _encoding.CompressTo(_compressedItemBuilder.Stream);
            return(InterceptMode.CompressingToStorage);
        }
Esempio n. 3
0
        public InterceptMode InterceptOnce()
        {
            StringSegment etag = SingleSegment(_response, "ETag");

            if (!etag.HasValue)
            {
                return InterceptMode.DoingNothing;
            }

            if (etag.StartsWith("\"", StringComparison.Ordinal) &&
                etag.EndsWith("\"", StringComparison.Ordinal))
            {
                _compressedETag = etag.Substring(0, etag.Count - 1) + "^" + _encoding.Name + "\"";
            }
            else
            {
                _compressedETag = "\"" + etag.Value + "^" + _encoding.Name + "\"";
            }

            HttpStatusCode statusCode = (HttpStatusCode)_response.StatusCode;
            if (statusCode == HttpStatusCode.NotModified)
            {
                return InterceptMode.SentFromStorage;
            }

            var key = new CompressedKey
            {
                ETag = _compressedETag,
                RequestPath = _request.Path,
                RequestQueryString = _request.QueryString,
                RequestMethod = _request.Method,
            };

            _compressedItem = _storage.Open(key);
            if (_compressedItem != null)
            {
                return InterceptMode.SentFromStorage;
            }

            _compressedItemBuilder = _storage.Create(key);
            _compressingStream = _encoding.CompressTo(_compressedItemBuilder.Stream);
            return InterceptMode.CompressingToStorage;
        }
        public ICompressedItemHandle Commit(ICompressedItemBuilder builder)
        {
            var itemBuilder = (ItemBuilder)builder;
            CompressedKey key = itemBuilder.Key;
            var item = new Item
            {
                PhysicalPath = itemBuilder.PhysicalPath,
                CompressedLength = itemBuilder.Stream.Length
            };
            itemBuilder.Stream.Close();

            var handle = new ItemHandle(item);
            AddHandleInDictionary(key, handle);
            return handle;
        }