Merge pull request #3678 from mono/seq-read
[mono.git] / mcs / class / System.Net.Http / System.Net.Http / HttpResponseMessage.cs
index 040ec6cfbdcbd310135843c7e7abeece2ad5e20f..25c9743fbc711c782a89d02a668a452aa02ba64c 100644 (file)
@@ -27,6 +27,7 @@
 //
 
 using System.Net.Http.Headers;
+using System.Text;
 
 namespace System.Net.Http
 {
@@ -36,6 +37,7 @@ namespace System.Net.Http
                string reasonPhrase;
                HttpStatusCode statusCode;
                Version version;
+               bool disposed;
 
                public HttpResponseMessage ()
                        : this (HttpStatusCode.OK)
@@ -64,7 +66,7 @@ namespace System.Net.Http
 
                public string ReasonPhrase {
                        get {
-                               return reasonPhrase; // ?? HttpListener.GetStatusDescription (statusCode);
+                               return reasonPhrase ?? HttpListenerResponseHelper.GetStatusDescription ((int) statusCode);
                        }
                        set {
                                reasonPhrase = value;
@@ -104,6 +106,12 @@ namespace System.Net.Http
 
                protected virtual void Dispose (bool disposing)
                {
+                       if (disposing && !disposed) {
+                               disposed = true;
+
+                               if (Content != null)
+                                       Content.Dispose ();
+                       }
                }
 
                public HttpResponseMessage EnsureSuccessStatusCode ()
@@ -113,5 +121,21 @@ namespace System.Net.Http
 
                        throw new HttpRequestException (string.Format ("{0} ({1})", (int) statusCode, ReasonPhrase));
                }
+               
+               public override string ToString ()
+               {
+                       var sb = new StringBuilder ();
+                       sb.Append ("StatusCode: ").Append ((int)StatusCode);
+                       sb.Append (", ReasonPhrase: '").Append (ReasonPhrase ?? "<null>");
+                       sb.Append ("', Version: ").Append (Version);
+                       sb.Append (", Content: ").Append (Content != null ? Content.ToString () : "<null>");
+                       sb.Append (", Headers:\r\n{\r\n").Append (Headers);
+                       if (Content != null)
+                               sb.Append (Content.Headers);
+                       
+                       sb.Append ("}");
+                       
+                       return sb.ToString ();
+               }
        }
 }