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); }
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); }
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; }