Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="HttpWebResponseSocks" /> class.
        /// </summary>
        /// <param name="responseUri">The response URI.</param>
        /// <param name="verb">The verb.</param>
        /// <param name="statusCode">The status code.</param>
        /// <param name="responseHeaders">The response headers.</param>
        /// <param name="responseStream">The response stream.</param>
        /// <exception cref="InvalidOperationException"></exception>
        internal HttpWebResponseSocks(Uri responseUri, KnownHttpVerb verb, HttpStatusCode statusCode, WebHeaderCollection responseHeaders, Stream responseStream)
        {
            StatusCode       = statusCode;
            Headers          = responseHeaders;
            ResponseUri      = responseUri;
            _socksConnection = null;
            _verb            = verb;

            // Build stream object for WebResponse
            string contentEncodingKey;
            DecompressionMethods compressionMethod;

            if (!Headers.ContainsHeaderKey(HttpResponseHeader.ContentEncoding.ToString(), out contentEncodingKey) ||
                !Enum.TryParse(Headers[contentEncodingKey], true, out compressionMethod))
            {
                _responseStream = responseStream;
                return;
            }

            // If content encoding is
            var contentEncoding = Headers[contentEncodingKey].Trim().ToLowerInvariant();

            switch (compressionMethod)
            {
            case DecompressionMethods.GZip:
                _responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
                Headers[HttpRequestHeader.ContentLength] = "-1";
                break;

            case DecompressionMethods.Deflate:
                _responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);
                Headers[HttpRequestHeader.ContentLength] = "-1";
                break;

            default:
                throw new InvalidOperationException($"Unknown encoding type '{contentEncoding}'");
            }
        }
Пример #2
0
 /// <summary>
 /// Determines whether the specified header collection contains header.
 /// </summary>
 /// <param name="headers">The header collection.</param>
 /// <param name="headerKey">Header name to look for.</param>
 /// <param name="headerKeyFound">The matching header (might be slightly different from the supplied name).</param>
 /// <returns></returns>
 public static bool ContainsHeader(this WebHeaderCollection headers, HttpRequestHeader headerKey, out string headerKeyFound)
 {
     return(headers.ContainsHeaderKey(headerKey.ToString(), out headerKeyFound));
 }