Add System.Net.Http to build
authorMarek Safar <marek.safar@gmail.com>
Thu, 1 Mar 2012 10:52:18 +0000 (10:52 +0000)
committerMarek Safar <marek.safar@gmail.com>
Thu, 1 Mar 2012 10:54:02 +0000 (10:54 +0000)
13 files changed:
mcs/class/Makefile
mcs/class/System.Net.Http/System.Net.Http/ByteArrayContent.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs
mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs
mcs/class/System.Net.Http/System.Net.Http/HttpMessageHandler.cs
mcs/class/System.Net.Http/System.Net.Http/StreamContent.cs
mcs/class/System.Net.Http/Test/System.Net.Http/ByteArrayContentTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpRequestMessageTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpResponseMessageTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/StreamContentTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/StringContentTest.cs

index 3021d12d820dd5799526a8a6158825ebc8abe87f..d45dbe0848e24b4bbc8624d17189c891ac2b76a4 100644 (file)
@@ -192,7 +192,8 @@ net_4_0_only_dirs := \
 
 net_4_5_dirs := \
        System.Threading.Tasks.Dataflow \
-       System.ComponentModel.Composition.4.5
+       System.ComponentModel.Composition.4.5 \
+       System.Net.Http
 
 net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) aot-compiler
 moonlight_raw_SUBDIRS := $(moonlight_raw_dirs)
index 80fbb12943eeeb0113bc4181d5ee9d19f22c2d48..b94da267f8628b4ca4c532341c91b83d09dc170c 100644 (file)
@@ -58,11 +58,6 @@ namespace System.Net.Http
                        this.count = count;
                }
 
-               protected override Stream CreateContentReadStream ()
-               {
-                       return new MemoryStream (content, offset, count);
-               }
-
                protected override void SerializeToStream (Stream stream, TransportContext context)
                {
                        stream.Write (content, offset, count);
index 6258b0ceab2b06d69178a0815337c3f10c2dd800..d7384fca6c3650636b1a574d94fd2876f95e1cf8 100644 (file)
@@ -28,6 +28,7 @@
 
 using System.Threading;
 using System.Net.Http.Headers;
+using System.Threading.Tasks;
 
 namespace System.Net.Http
 {
@@ -117,62 +118,122 @@ namespace System.Net.Http
                        }
                }
 
-               public HttpResponseMessage Delete (string requestUri)
+               public Task<HttpResponseMessage> DeleteAsync (string requestUri)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Delete, requestUri));
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Delete, requestUri));
                }
 
-               public HttpResponseMessage Delete (Uri requestUri)
+               public Task<HttpResponseMessage> DeleteAsync (string requestUri, CancellationToken cancellationToken)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Delete, requestUri));
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Delete, requestUri), cancellationToken);
                }
 
-               public HttpResponseMessage Get (string requestUri)
+               public Task<HttpResponseMessage> DeleteAsync (Uri requestUri)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Get, requestUri));
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Delete, requestUri));
                }
 
-               public HttpResponseMessage Get (Uri requestUri)
+               public Task<HttpResponseMessage> DeleteAsync (Uri requestUri, CancellationToken cancellationToken)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Get, requestUri));
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Delete, requestUri), cancellationToken);
                }
 
-               public HttpResponseMessage Post (string requestUri, HttpContent content)
+               public Task<HttpResponseMessage> GetAsync (string requestUri)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content });
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri));
                }
 
-               public HttpResponseMessage Put (Uri requestUri, HttpContent content)
+               public Task<HttpResponseMessage> GetAsync (string requestUri, CancellationToken cancellationToken)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content });
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri));
                }
 
-               public HttpResponseMessage Put (string requestUri, HttpContent content)
+               public Task<HttpResponseMessage> GetAsync (string requestUri, HttpCompletionOption completionOption)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content });
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri), completionOption);
                }
 
-               public HttpResponseMessage Post (Uri requestUri, HttpContent content)
+               public Task<HttpResponseMessage> GetAsync (string requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken)
                {
-                       return Send (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content });
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri), completionOption, cancellationToken);
                }
 
-               public HttpResponseMessage Send (HttpRequestMessage request)
+               public Task<HttpResponseMessage> GetAsync (Uri requestUri)
                {
-                       return Send (request, HttpCompletionOption.ResponseContentRead, CancellationToken.None);
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri));
                }
 
-               public HttpResponseMessage Send (HttpRequestMessage request, HttpCompletionOption completionOption)
+               public Task<HttpResponseMessage> GetAsync (Uri requestUri, CancellationToken cancellationToken)
                {
-                       return Send (request, completionOption, CancellationToken.None);
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri), cancellationToken);
                }
 
-               public HttpResponseMessage Send (HttpRequestMessage request, CancellationToken cancellationToken)
+               public Task<HttpResponseMessage> GetAsync (Uri requestUri, HttpCompletionOption completionOption)
                {
-                       return Send (request, HttpCompletionOption.ResponseContentRead, cancellationToken);
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri), completionOption);
                }
 
-               public HttpResponseMessage Send (HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
+               public Task<HttpResponseMessage> GetAsync (Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Get, requestUri), completionOption, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> PostAsync (string requestUri, HttpContent content)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content });
+               }
+
+               public Task<HttpResponseMessage> PostAsync (string requestUri, HttpContent content, CancellationToken cancellationToken)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content }, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> PostAsync (Uri requestUri, HttpContent content)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content });
+               }
+
+               public Task<HttpResponseMessage> PostAsync (Uri requestUri, HttpContent content, CancellationToken cancellationToken)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Post, requestUri) { Content = content }, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> PutAsync (Uri requestUri, HttpContent content)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content });
+               }
+
+               public Task<HttpResponseMessage> PutAsync (Uri requestUri, HttpContent content, CancellationToken cancellationToken)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content }, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> PutAsync (string requestUri, HttpContent content)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content });
+               }
+
+               public Task<HttpResponseMessage> PutAsync (string requestUri, HttpContent content, CancellationToken cancellationToken)
+               {
+                       return SendAsync (new HttpRequestMessage (HttpMethod.Put, requestUri) { Content = content }, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> SendAsync (HttpRequestMessage request)
+               {
+                       return SendAsync (request, HttpCompletionOption.ResponseContentRead, CancellationToken.None);
+               }
+
+               public Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, HttpCompletionOption completionOption)
+               {
+                       return SendAsync (request, completionOption, CancellationToken.None);
+               }
+
+               public Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
+               {
+                       return SendAsync (request, HttpCompletionOption.ResponseContentRead, cancellationToken);
+               }
+
+               public Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
                {
                        if (request == null)
                                throw new ArgumentNullException ("request");
@@ -198,9 +259,9 @@ namespace System.Net.Http
                                using (var cts = CancellationTokenSource.CreateLinkedTokenSource (cancellation_token.Token, cancellationToken)) {
                                        cts.CancelAfter (timeout);
 
-                                       var response = handler.Send (request, cts.Token);
-                                       if (response == null)
-                                               throw new InvalidOperationException ("Handler failed to return a response");
+                                       var response = handler.SendAsync (request, cts.Token);
+                                       //if (response == null)
+                                       //      throw new InvalidOperationException ("Handler failed to return a response");
 
                                        return response;
                                }
index 37fdaf94d83d4e6e29db0b90ea16bd01eec8f9bf..6c832662162e37b6720a73a5c48cda55352b3d2a 100644 (file)
@@ -256,7 +256,7 @@ namespace System.Net.Http
 
                        return response;
                }
-
+               /*
                protected internal override HttpResponseMessage Send (HttpRequestMessage request, CancellationToken cancellationToken)
                {
                        var wrequest = CreateWebRequest (request);
@@ -271,7 +271,7 @@ namespace System.Net.Http
 
                        return CreateResponseMessage (wresponse, request);
                }
-               
+               */
                protected internal override Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
                {
                        throw new NotImplementedException ();
index 6256eeb341e25c093fc3bc0010c1a860728aabe6..85133731681e1104fc498e7636e81a425b28e112 100644 (file)
@@ -36,19 +36,9 @@ namespace System.Net.Http
        public abstract class HttpContent : IDisposable
        {
                MemoryStream buffer;
-               Stream content_stream;
                bool disposed;
                HttpContentHeaders headers;
 
-               public Stream ContentReadStream {
-                       get {
-                               if (content_stream == null)
-                                       content_stream = CreateContentReadStream ();
-
-                               return content_stream;
-                       }
-               }
-
                public HttpContentHeaders Headers {
                        get {
                                return headers ?? (headers = new HttpContentHeaders (this));
@@ -81,12 +71,6 @@ namespace System.Net.Http
                        return SerializeToStreamAsync (stream, context);
                }
 
-               protected virtual Stream CreateContentReadStream ()
-               {
-                       LoadIntoBuffer ();
-                       return buffer;
-               }
-
                public void Dispose ()
                {
                        Dispose (true);
@@ -99,9 +83,6 @@ namespace System.Net.Http
 
                                if (buffer != null)
                                        buffer.Dispose ();
-
-                               if (content_stream != null)
-                                       content_stream.Dispose ();
                        }
                }
 
@@ -133,17 +114,18 @@ namespace System.Net.Http
                        throw new NotImplementedException ();
                }
 
-               public byte[] ReadAsByteArray ()
+               public Task<byte[]> ReadAsByteArrayAsync ()
                {
                        LoadIntoBuffer ();
-                       return buffer.ToArray ();
+                       throw new NotImplementedException ();
+//                     return buffer.ToArray ();
                }
 
-               public string ReadAsString ()
+               public Task<string> ReadAsStringAsync ()
                {
                        LoadIntoBuffer ();
                        if (buffer.Length == 0)
-                               return string.Empty;
+                               return Task.FromResult (string.Empty);
 
                        Encoding encoding;
                        if (headers != null && headers.ContentType != null && headers.ContentType.CharSet != null) {
@@ -152,7 +134,8 @@ namespace System.Net.Http
                                encoding = Encoding.UTF8;
                        }
 
-                       return encoding.GetString (buffer.GetBuffer (), 0, (int) buffer.Length);
+                       throw new NotImplementedException ();
+                       //return encoding.GetString (buffer.GetBuffer (), 0, (int) buffer.Length);
                }
 
                protected abstract void SerializeToStream (Stream stream, TransportContext context);
index 7313c06601f481a53568eb4ef60df091a0831edd..98e0101cb166b079c209f8f53a6ce9e8bfc8a0a4 100644 (file)
@@ -42,7 +42,6 @@ namespace System.Net.Http
                {
                }
 
-               protected internal abstract HttpResponseMessage Send (HttpRequestMessage request, CancellationToken cancellationToken);
                protected internal abstract Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, CancellationToken cancellationToken);
        }
 }
index 06831d6f57a2d8ff9d329cb54b3f75b9c2a40928..bc507ad081e6d2ea21af327783b562e0e12bd323 100644 (file)
@@ -53,11 +53,6 @@ namespace System.Net.Http
                        this.bufferSize = bufferSize;
                }
 
-               protected override Stream CreateContentReadStream ()
-               {
-                       return content;
-               }
-
                protected override void Dispose (bool disposing)
                {
                        if (disposing) {
index 410c9a2965e092e715ea9ca5464dcf29b4d097a8..f5d41e3e37bf22ef91280e0fd882cf1261ae3060 100644 (file)
@@ -73,47 +73,11 @@ namespace MonoTests.System.Net.Http
                        }
                }
 
-               [Test]
-               public void ContentReadStream ()
-               {
-                       byte[] b = { 4, 2 };
-
-                       var sc = new ByteArrayContent (b);
-                       var s = sc.ContentReadStream;
-                       Assert.AreEqual (4, s.ReadByte (), "#1");
-                       Assert.AreEqual (2, s.ReadByte (), "#2");
-               }
-
                [Test]
                public void CopyTo_Invalid ()
                {
                        var m = new MemoryStream ();
 
-                       var sc = new ByteArrayContent (new byte[0]);
-                       try {
-                               sc.CopyTo (null);
-                               Assert.Fail ("#1");
-                       } catch (ArgumentNullException) {
-                       }
-               }
-
-               [Test]
-               public void CopyTo ()
-               {
-                       byte[] b = { 4, 2 };
-
-                       var sc = new ByteArrayContent (b);
-
-                       var dest = new MemoryStream ();
-                       sc.CopyTo (dest);
-                       Assert.AreEqual (2, dest.Length, "#1");
-
-                       sc.CopyTo (dest, null);
-               }
-
-               [Test]
-               public void CopyToAsync_Invalid ()
-               {
                        var sc = new ByteArrayContent (new byte[0]);
                        try {
                                sc.CopyToAsync (null);
@@ -136,37 +100,37 @@ namespace MonoTests.System.Net.Http
                }
 
                [Test]
-               public void LoadIntoBuffer ()
+               public void LoadIntoBufferAsync ()
                {
                        byte[] b = { 4 };
 
                        var sc = new ByteArrayContent (b);
-                       sc.LoadIntoBuffer (400);
+                       sc.LoadIntoBufferAsync (400).Wait ();
                }
 
                [Test]
-               public void ReadAsByteArray ()
+               public void ReadAsByteArrayAsync ()
                {
                        byte[] b = { 4, 55 };
 
                        var sc = new ByteArrayContent (b, 1, 1);
-                       var res = sc.ReadAsByteArray ();
+                       var res = sc.ReadAsByteArrayAsync ().Result;
                        Assert.AreEqual (1, res.Length, "#1");
                        Assert.AreEqual (55, res[0], "#2");
 
                        sc = new ByteArrayContent (b);
-                       res = sc.ReadAsByteArray ();
+                       res = sc.ReadAsByteArrayAsync ().Result;
                        Assert.AreEqual (2, res.Length, "#10");
                        Assert.AreEqual (55, res[1], "#11");
                }
 
                [Test]
-               public void ReadAsString ()
+               public void ReadAsStringAsync ()
                {
                        byte[] b = { 77, 55 };
 
                        var sc = new ByteArrayContent (b);
-                       var res = sc.ReadAsString ();
+                       var res = sc.ReadAsStringAsync ().Result;
                        Assert.AreEqual ("M7", res, "#1");
                }
        }
index 4bffc55c485f851eb3160e5e646975ed80b41a42..b7cf6e5c4026ccac109613d0f0d3df70f8513e61 100644 (file)
@@ -46,34 +46,24 @@ namespace MonoTests.System.Net.Http
        {
                class HttpMessageHandlerMock : HttpMessageHandler
                {
-                       public Func<HttpRequestMessage, HttpResponseMessage> OnSend;
-                       public Func<HttpRequestMessage, CancellationToken, HttpResponseMessage> OnSendFull;
-                       public Func<HttpRequestMessage, Task<HttpResponseMessage>> OnSendAsync;
+                       public Func<HttpRequestMessage, Task<HttpResponseMessage>> OnSend;
+                       public Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> OnSendFull;
 
                        public HttpMessageHandlerMock ()
                        {
                        }
 
-                       protected override HttpResponseMessage Send (HttpRequestMessage request, CancellationToken cancellationToken)
+                       protected override Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
                        {
                                if (OnSend != null)
                                        return OnSend (request);
 
                                if (OnSendFull != null)
-                                   return OnSendFull (request, cancellationToken);
+                                       return OnSendFull (request, cancellationToken);
 
                                Assert.Fail ("Send");
                                return null;
                        }
-
-                       protected override Task<HttpResponseMessage> SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
-                       {
-                               if (OnSendAsync != null)
-                                       return OnSendAsync (request);
-                               
-                               Assert.Fail ("SendAsync");
-                               return null;
-                       }
                }
 
                string port, TestHost, LocalServer;
@@ -115,11 +105,11 @@ namespace MonoTests.System.Net.Http
                                Assert.IsTrue (c.WaitHandle.WaitOne (1000), "#20");
                                Assert.IsTrue (c.IsCancellationRequested, "#21");
                                mre.Set ();
-                               return new HttpResponseMessage ();
+                               return Task.FromResult (new HttpResponseMessage ());
                        };
 
                        var t = Task.Factory.StartNew (() => {
-                               client.Send (request);
+                               client.SendAsync (request).Wait ();
                        });
 
                        Assert.IsTrue (mre.WaitOne (500), "#1");
@@ -130,10 +120,10 @@ namespace MonoTests.System.Net.Http
                        request = new HttpRequestMessage (HttpMethod.Get, "http://xamarin.com");
                        mh.OnSendFull = (l, c) => {
                                Assert.IsFalse (c.IsCancellationRequested, "#30");
-                               return new HttpResponseMessage ();
+                               return Task.FromResult (new HttpResponseMessage ());
                        };
 
-                       client.Send (request);
+                       client.SendAsync (request).Wait ();
                }
 
                [Test]
@@ -152,13 +142,13 @@ namespace MonoTests.System.Net.Http
 
                        mh.OnSendFull = (l, c) => {
                                Assert.IsFalse (c.IsCancellationRequested, "#30");
-                               return new HttpResponseMessage ();
+                               return Task.FromResult (new HttpResponseMessage ());
                        };
 
-                       client.Send (request);
+                       client.SendAsync (request).Wait ();
 
                        request = new HttpRequestMessage (HttpMethod.Get, "http://xamarin.com");
-                       client.Send (request);
+                       client.SendAsync (request).Wait ();
                }
 
                [Test]
@@ -205,10 +195,10 @@ namespace MonoTests.System.Net.Http
                        mh.OnSend = l => {
                                Assert.AreEqual (l, request, "#2");
                                Assert.AreEqual (client.BaseAddress, l.RequestUri, "#2");
-                               return response;
+                               return Task.FromResult (response);
                        };
 
-                       Assert.AreEqual (response, client.Send (request), "#1");
+                       Assert.AreEqual (response, client.SendAsync (request).Result, "#1");
                }
 
                [Test]
@@ -225,10 +215,10 @@ namespace MonoTests.System.Net.Http
                        mh.OnSend = l => {
                                Assert.AreEqual (client.DefaultRequestHeaders.Referrer, l.Headers.Referrer, "#2");
                                Assert.IsNotNull (l.Headers.Referrer, "#3");
-                               return response;
+                               return Task.FromResult (response);
                        };
 
-                       Assert.AreEqual (response, client.Send (request), "#1");
+                       Assert.AreEqual (response, client.SendAsync (request).Result, "#1");
                }
 
                [Test]
@@ -262,9 +252,9 @@ namespace MonoTests.System.Net.Http
                        try {
                                var client = new HttpClient ();
                                var request = new HttpRequestMessage (HttpMethod.Get, LocalServer);
-                               var response = client.Send (request, HttpCompletionOption.ResponseHeadersRead);
+                               var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
 
-                               Assert.AreEqual ("", response.Content.ReadAsString (), "#100");
+                               Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
                                Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101");
                        } finally {
                                listener.Close ();
@@ -301,9 +291,9 @@ namespace MonoTests.System.Net.Http
                                var client = new HttpClient ();
                                var request = new HttpRequestMessage (HttpMethod.Get, LocalServer);
                                request.Version = HttpVersion.Version10;
-                               var response = client.Send (request, HttpCompletionOption.ResponseHeadersRead);
+                               var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
 
-                               Assert.AreEqual ("", response.Content.ReadAsString (), "#100");
+                               Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
                                Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101");
                        } finally {
                                listener.Close ();
@@ -356,9 +346,9 @@ namespace MonoTests.System.Net.Http
                                var client = new HttpClient (chandler);
                                var request = new HttpRequestMessage (HttpMethod.Get, LocalServer);
                                request.Version = HttpVersion.Version10;
-                               var response = client.Send (request, HttpCompletionOption.ResponseHeadersRead);
+                               var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
 
-                               Assert.AreEqual ("", response.Content.ReadAsString (), "#100");
+                               Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
                                Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101");
                        } finally {
                                listener.Close ();
@@ -391,9 +381,9 @@ namespace MonoTests.System.Net.Http
                                var request = new HttpRequestMessage (HttpMethod.Get, LocalServer);
                                request.Headers.AddWithoutValidation ("aa", "vv");
 //                             request.Headers.Range = new RangeHeaderValue (3, 20);
-                               var response = client.Send (request, HttpCompletionOption.ResponseHeadersRead);
+                               var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
 
-                               Assert.AreEqual ("", response.Content.ReadAsString (), "#100");
+                               Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
                                Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101");
 
                                IEnumerable<string> values;
@@ -432,9 +422,9 @@ namespace MonoTests.System.Net.Http
                        try {
                                var client = new HttpClient ();
                                var request = new HttpRequestMessage (HttpMethod.Get, LocalServer);
-                               var response = client.Send (request, HttpCompletionOption.ResponseHeadersRead);
+                               var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result;
 
-                               Assert.AreEqual ("", response.Content.ReadAsString (), "#100");
+                               Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100");
                                Assert.AreEqual (HttpStatusCode.InternalServerError, response.StatusCode, "#101");
                        } finally {
                                listener.Close ();
@@ -452,9 +442,9 @@ namespace MonoTests.System.Net.Http
                        try {
                                var client = new HttpClient ();
                                var r = new HttpRequestMessage (HttpMethod.Get, LocalServer);
-                               var response = client.Send (r);
+                               var response = client.SendAsync (r).Result;
 
-                               Assert.AreEqual ("H", response.Content.ReadAsString ());
+                               Assert.AreEqual ("H", response.Content.ReadAsStringAsync ().Result);
                        } finally {
                                listener.Close ();
                        }
@@ -475,7 +465,7 @@ namespace MonoTests.System.Net.Http
                                var client = new HttpClient ();
                                var r = new HttpRequestMessage (HttpMethod.Put, LocalServer);
                                r.Content = new StringContent ("my text");
-                               var response = client.Send (r);
+                               var response = client.SendAsync (r).Result;
 
                                Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#1");
                                Assert.IsTrue (passed, "#2");
@@ -498,10 +488,10 @@ namespace MonoTests.System.Net.Http
 
                        mh.OnSendFull = (l, c) => {
                                Assert.IsTrue (c.WaitHandle.WaitOne (500), "#2");
-                               return response;
+                               return Task.FromResult (response);
                        };
 
-                       Assert.AreEqual (response, client.Send (request), "#1");
+                       Assert.AreEqual (response, client.SendAsync (request).Result, "#1");
                }
 
                [Test]
@@ -509,14 +499,14 @@ namespace MonoTests.System.Net.Http
                {
                        var client = new HttpClient ();
                        try {
-                               client.Send (null);
+                               client.SendAsync (null).Wait ();
                                Assert.Fail ("#1");
                        } catch (ArgumentNullException) {
                        }
 
                        try {
                                var request = new HttpRequestMessage ();
-                               client.Send (request);
+                               client.SendAsync (request).Wait ();
                                Assert.Fail ("#2");
                        } catch (InvalidOperationException) {
                        }
@@ -537,7 +527,8 @@ namespace MonoTests.System.Net.Http
                        };
 
                        try {
-                               client.Send (request);
+                               // Broken on .net because of return null
+                               client.SendAsync (request).Wait ();
                                Assert.Fail ("#2");
                        } catch (InvalidOperationException) {
                        }
@@ -552,12 +543,12 @@ namespace MonoTests.System.Net.Http
                        var request = new HttpRequestMessage (HttpMethod.Get, "http://xamarin.com");
 
                        mh.OnSend = l => {
-                               return new HttpResponseMessage ();
+                               return Task.FromResult (new HttpResponseMessage ());
                        };
 
-                       client.Send (request);
+                       client.SendAsync (request).Wait ();
                        try {
-                               client.Send (request);
+                               client.SendAsync (request).Wait ();
                        } catch (InvalidOperationException) {
                        }
                }
index ade510e0276815df207d639d35e8c6a85fdfbaa0..45a499802547a8e3f5a1a9ba53ed596c97117023 100644 (file)
@@ -394,7 +394,7 @@ namespace MonoTests.System.Net.Http
                        HttpRequestHeaders headers = message.Headers;
 
                        try {
-                               headers.Add ("Age", "");
+                               headers.Add ("Allow", "");
                                Assert.Fail ("#1");
                        } catch (InvalidOperationException) {
                        }
@@ -418,7 +418,7 @@ namespace MonoTests.System.Net.Http
                        }
 
                        try {
-                               headers.AddWithoutValidation ("Age", "");
+                               headers.AddWithoutValidation ("Allow", "");
                                Assert.Fail ("#3");
                        } catch (InvalidOperationException) {
                        }
@@ -461,6 +461,20 @@ namespace MonoTests.System.Net.Http
                        }
                }
 
+               [Test]
+               public void Headers_Response ()
+               {
+                       HttpRequestMessage message = new HttpRequestMessage ();
+                       HttpRequestHeaders headers = message.Headers;
+
+                       headers.Add ("Age", "vv");
+                       Assert.AreEqual ("vv", headers.GetValues ("Age").First (), "#1");
+
+                       headers.Clear ();
+                       headers.AddWithoutValidation ("Age", "vv");
+                       Assert.AreEqual ("vv", headers.GetValues ("Age").First (), "#2");
+               }
+
                [Test]
                public void Headers_ExpectContinue ()
                {
index 4715266b13dbeefe9162a172db0e7ca08ec4a116..8eaf2e97b8bf1f1b4d701ca4dedb3eebbe175f47 100644 (file)
@@ -355,13 +355,13 @@ namespace MonoTests.System.Net.Http
                        }
 
                        try {
-                               headers.Add ("accept", "audio");
+                               headers.Add ("Allow", "audio");
                                Assert.Fail ("#2c");
                        } catch (InvalidOperationException) {
                        }
 
                        try {
-                               headers.AddWithoutValidation ("Max-Forwards", "");
+                               headers.AddWithoutValidation ("Allow", "");
                                Assert.Fail ("#3");
                        } catch (InvalidOperationException) {
                        }
@@ -404,6 +404,20 @@ namespace MonoTests.System.Net.Http
                        }
                }
 
+               [Test]
+               public void Headers_Request ()
+               {
+                       HttpResponseMessage message = new HttpResponseMessage ();
+                       HttpResponseHeaders headers = message.Headers;
+
+                       headers.Add ("accept", "audio");
+                       Assert.AreEqual ("audio", headers.GetValues ("Accept").First (), "#1");
+
+                       headers.Clear ();
+                       headers.AddWithoutValidation ("accept", "audio");
+                       Assert.AreEqual ("audio", headers.GetValues ("Accept").First (), "#2");
+               }
+
                [Test]
                public void Headers_ConnectionClose ()
                {
index 10f108ebed59142072ee590b42e63a4350fba2f9..68c45bbe7315cf1381e7963f343d9d43bda1c00b 100644 (file)
@@ -45,7 +45,6 @@ namespace MonoTests.System.Net.Http
                class StreamContentMock : StreamContent
                {
                        public Func<long> OnTryComputeLength;
-                       public Action OnCreateContentReadStream;
                        public Action OnSerializeToStreamAsync;
 
                        public StreamContentMock (Stream stream)
@@ -63,11 +62,6 @@ namespace MonoTests.System.Net.Http
                                return base.TryComputeLength (out length);
                        }
 
-                       protected override void SerializeToStream (Stream stream, TransportContext context)
-                       {
-                               base.SerializeToStream (stream, context);
-                       }
-
                        protected override Task SerializeToStreamAsync (Stream stream, TransportContext context)
                        {
                                if (OnSerializeToStreamAsync != null)
@@ -75,14 +69,6 @@ namespace MonoTests.System.Net.Http
 
                                return base.SerializeToStreamAsync (stream, context);
                        }
-
-                       protected override Stream CreateContentReadStream ()
-                       {
-                               if (OnCreateContentReadStream != null)
-                                       OnCreateContentReadStream ();
-
-                               return base.CreateContentReadStream ();
-                       }
                }
 
                class ExceptionStream : MemoryStream
@@ -130,63 +116,6 @@ namespace MonoTests.System.Net.Http
                        }
                }
 
-               [Test]
-               public void ContentReadStream ()
-               {
-                       var ms = new MemoryStream ();
-                       ms.WriteByte (4);
-                       ms.WriteByte (2);
-                       ms.Seek (0, SeekOrigin.Begin);
-
-                       var sc = new StreamContent (ms);
-                       var s = sc.ContentReadStream;
-                       Assert.AreEqual (4, s.ReadByte (), "#1");
-                       Assert.AreEqual (2, s.ReadByte (), "#2");
-
-                       bool hit = false;
-                       var scm = new StreamContentMock (MemoryStream.Null);
-                       scm.OnCreateContentReadStream = () => { hit = true; };
-                       s = scm.ContentReadStream;
-                       Assert.IsTrue (hit, "#10");
-               }
-
-               [Test]
-               public void CopyTo_Invalid ()
-               {
-                       var m = new MemoryStream ();
-
-                       var sc = new StreamContent (new MemoryStream ());
-                       try {
-                               sc.CopyTo (null);
-                               Assert.Fail ("#1");
-                       } catch (ArgumentNullException) {
-                       }
-
-                       sc = new StreamContent (new ExceptionStream ());
-                       try {
-                               sc.CopyTo (m);
-                               Assert.Fail ("#2");
-                       } catch (ApplicationException) {
-                       }
-               }
-
-               [Test]
-               public void CopyTo ()
-               {
-                       var ms = new MemoryStream ();
-                       ms.WriteByte (4);
-                       ms.WriteByte (2);
-                       ms.Seek (0, SeekOrigin.Begin);
-
-                       var sc = new StreamContent (ms);
-
-                       var dest = new MemoryStream ();
-                       sc.CopyTo (dest);
-                       Assert.AreEqual (2, dest.Length, "#1");
-
-                       sc.CopyTo (dest, null);
-               }
-
                [Test]
                public void CopyToAsync_Invalid ()
                {
@@ -202,12 +131,14 @@ namespace MonoTests.System.Net.Http
                        //
                        // For some reason does not work on .net
                        //
-                       //sc = new StreamContent (new ExceptionStream ());
-                       //try {
-                       //    sc.CopyToAsync (m).Wait ();
-                       //    Assert.Fail ("#2");
-                       //} catch (AggregateException) {
-                       //}
+                       /*
+                       sc = new StreamContent (new ExceptionStream ());
+                       try {
+                           sc.CopyToAsync (m).Wait ();
+                           Assert.Fail ("#2");
+                       } catch (AggregateException) {
+                       }
+                       */ 
                }
 
                [Test]
@@ -230,9 +161,10 @@ namespace MonoTests.System.Net.Http
                        var scm = new StreamContentMock (new ExceptionStream ());
                        scm.OnSerializeToStreamAsync = () => { hit = true; };
                        task = scm.CopyToAsync (dest);
+                       task.Wait ();
 
                        Assert.IsTrue (hit, "#10");
-//                     Assert.IsTrue (task.IsFaulted, "#11");
+                       //Assert.IsTrue (task.IsFaulted, "#11");
                }
 
                [Test]
@@ -241,6 +173,7 @@ namespace MonoTests.System.Net.Http
                        var ms = new MemoryStream ();
                        ms.WriteByte (4);
                        ms.WriteByte (2);
+                       ms.Seek (0, SeekOrigin.Begin);
 
                        var sc = new StreamContent (ms);
                        var headers = sc.Headers;
@@ -363,23 +296,23 @@ namespace MonoTests.System.Net.Http
                        ms.Seek (0, SeekOrigin.Begin);
 
                        var sc = new StreamContent (ms);
-                       sc.LoadIntoBuffer (400);
+                       sc.LoadIntoBufferAsync (400).Wait ();
                }
 
                [Test]
-               public void ReadAsByteArray ()
+               public void ReadAsByteArrayAsync ()
                {
                        var ms = new MemoryStream ();
                        ms.WriteByte (4);
                        ms.WriteByte (55);
 
                        var sc = new StreamContent (ms);
-                       var res = sc.ReadAsByteArray ();
+                       var res = sc.ReadAsByteArrayAsync ().Result;
                        Assert.AreEqual (0, res.Length, "#1");
 
                        ms.Seek (0, SeekOrigin.Begin);
                        sc = new StreamContent (ms);
-                       res = sc.ReadAsByteArray ();
+                       res = sc.ReadAsByteArrayAsync ().Result;
                        Assert.AreEqual (2, res.Length, "#10");
                        Assert.AreEqual (55, res[1], "#11");
                }
@@ -393,7 +326,7 @@ namespace MonoTests.System.Net.Http
                        ms.Seek (0, SeekOrigin.Begin);
 
                        var sc = new StreamContent (ms);
-                       var res = sc.ReadAsString ();
+                       var res = sc.ReadAsStringAsync ().Result;
                        Assert.AreEqual ("M7", res, "#1");
                }
        }
index cd04ed8ab649d01e644fded80a38fcab37619972..51a077176b8d470b80b24ef6397f4b3c02e91b56 100644 (file)
@@ -66,39 +66,6 @@ namespace MonoTests.System.Net.Http
                        Assert.AreEqual ("Content-Type: multipart/*; charset=ibm852\r\n", s.Headers.ToString ());
                }
 
-               [Test]
-               public void ContentReadStream ()
-               {
-                       var sc = new StringContent ("ab\9e");
-                       var s = sc.ContentReadStream;
-                       Assert.AreEqual (97, s.ReadByte (), "#1");
-                       Assert.AreEqual (98, s.ReadByte (), "#2");
-                       Assert.AreEqual (197, s.ReadByte (), "#3");
-               }
-
-               [Test]
-               public void CopyTo_Invalid ()
-               {
-                       var sc = new StringContent ("");
-                       try {
-                               sc.CopyTo (null);
-                               Assert.Fail ("#1");
-                       } catch (ArgumentNullException) {
-                       }
-               }
-
-               [Test]
-               public void CopyTo ()
-               {
-                       var sc = new StringContent ("nm");
-
-                       var dest = new MemoryStream ();
-                       sc.CopyTo (dest);
-                       Assert.AreEqual (2, dest.Length, "#1");
-
-                       sc.CopyTo (dest, null);
-               }
-
                [Test]
                public void CopyToAsync_Invalid ()
                {
@@ -125,23 +92,23 @@ namespace MonoTests.System.Net.Http
                public void LoadIntoBuffer ()
                {
                        var sc = new StringContent ("b");
-                       sc.LoadIntoBuffer (400);
+                       sc.LoadIntoBufferAsync (400).Wait ();
                }
 
                [Test]
-               public void ReadAsByteArray ()
+               public void ReadAsByteArrayAsync ()
                {
                        var sc = new StringContent ("h");
-                       var res = sc.ReadAsByteArray ();
+                       var res = sc.ReadAsByteArrayAsync ().Result;
                        Assert.AreEqual (1, res.Length, "#1");
                        Assert.AreEqual (104, res[0], "#2");
                }
 
                [Test]
-               public void ReadAsString ()
+               public void ReadAsStringAsync ()
                {
                        var sc = new StringContent ("ab\9e");
-                       var res = sc.ReadAsString ();
+                       var res = sc.ReadAsStringAsync ().Result;
                        Assert.AreEqual ("ab\9e", res, "#1");
                }
        }