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