2 // Mono.Http.GZipHttpWebResponse
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // (c) 2003 Ximian, Inc. (http://www.ximian.com)
12 using System.Runtime.Serialization;
13 using ICSharpCode.SharpZipLib.GZip;
18 public class GZipWebResponse : WebResponse, ISerializable, IDisposable
22 [NonSerialized] Stream stream;
23 [NonSerialized] long gzipLength;
25 internal GZipWebResponse (WebResponse response, bool compressed)
27 this.response = response;
28 this.compressed = compressed;
31 protected GZipWebResponse (SerializationInfo info, StreamingContext context)
33 response = (WebResponse) info.GetValue ("response", typeof (WebResponse));
34 compressed = info.GetBoolean ("compressed");
37 public override long ContentLength {
43 return response.ContentLength;
47 public override string ContentType {
48 get { return response.ContentType; }
51 public override WebHeaderCollection Headers {
52 get { return response.Headers; }
55 public override Uri ResponseUri {
56 get { return response.ResponseUri; }
59 public WebResponse RealResponse {
60 get { return response; }
63 public bool IsCompressed {
64 get { return compressed; }
67 public override Stream GetResponseStream ()
79 Stream st = response.GetResponseStream ();
83 stream = new GZipInputStream (st);
84 gzipLength = stream.Length;
89 void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
91 info.AddValue ("response", response);
92 info.AddValue ("compressed", compressed);
95 public override void Close ()
97 ((IDisposable) this).Dispose ();
100 void IDisposable.Dispose ()
102 if (stream != null) {
107 if (response != null) {