CreateRequest() public method

public CreateRequest ( ) : HttpRequestMessage
return System.Net.Http.HttpRequestMessage
Ejemplo n.º 1
0
        public void UseAllowHintToSetRequestMethodOnLink()
        {
            // Arrange
            var hint = new AllowHint();
            hint.AddMethod(HttpMethod.Post);
            hint.ConfigureRequest = (h, r) =>
                {
                    // Really not sure if this is a good idea to allow hints to actually change the request.
                    // Should they just validate the current request?
                    // How do we know if someone has explicitly set link.method or if it is just a default Get.
                    var allowHint = ((AllowHint)h);
                    if ( !allowHint.Methods.Contains(r.Method))
                    {
                        r.Method = allowHint.Methods.First();
                    }
                    return r;
                };

            var link = new Link();
            link.AddHint(hint);
            
            // Act
            var request = link.CreateRequest();

            //Asset
            Assert.Equal(HttpMethod.Post,request.Method);            

        }
Ejemplo n.º 2
0
        public void DefaultLinkShouldCreateAGetRequest()
        {
            var link = new Link() { Target = new Uri("Http://localhost") };

            var request = link.CreateRequest();

            Assert.Equal(HttpMethod.Get,request.Method);
        }
Ejemplo n.º 3
0
        public void UseLinkToMakeRequest()
        {
            var link = new Link { Target = new Uri("Http://localhost") };
            var client = new HttpClient(new FakeMessageHandler());

            var response = client.SendAsync(link.CreateRequest()).Result;

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
Ejemplo n.º 4
0
        public void AddParameterToLinkMultipleTimes()
        {
            var link = new Link() { Target = new Uri("http://localhost/{?foo}") };
            link.SetParameter("foo", "bar");
            link.SetParameter("foo", "blah");

            var request = link.CreateRequest();

            Assert.Equal("http://localhost/?foo=blah", request.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 5
0
        public void AddParameterToLink()
        {
            var link = new Link(){ Target = new Uri("http://localhost/{?foo}")};
            link.SetParameter("foo","bar");

            var client = new HttpClient(new FakeMessageHandler());

            var response = client.SendAsync(link.CreateRequest()).Result;

            Assert.Equal("http://localhost/?foo=bar", response.RequestMessage.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 6
0
        public void AddParameter()
        {
            //Arrange
            var link = new Link() { Target = new Uri("http://localtmserver:8700/api/locweldlocal/Assemblies?RootAssembly=true{&workorder}") };

            //Act
            link.SetParameter("workorder","W1542");

            var req = link.CreateRequest();
            //Assert
            Assert.AreEqual("http://localtmserver:8700/api/locweldlocal/Assemblies?RootAssembly=true&workorder=W1542".ToLowerInvariant(), req.RequestUri.ToString().ToLowerInvariant());
        }
Ejemplo n.º 7
0
 public static Task <HttpResponseMessage> FollowLinkAsync(this HttpClient httpClient, Link link)
 {
     return(httpClient.SendAsync(link.CreateRequest())
            .ContinueWith(t =>
     {
         if (t.IsCompleted && link.HttpResponseHandler != null)
         {
             return link.HandleResponseAsync(t.Result);
         }
         return t;
     }).Unwrap());
 }
 public static Task<HttpResponseMessage> FollowLinkAsync(this HttpClient httpClient, Link link)
 {
     return httpClient.SendAsync(link.CreateRequest())
         .ContinueWith(t =>
         {
             if (t.IsCompleted && link.HttpResponseHandler != null)
             {
                 return link.HandleResponseAsync(t.Result);
             }
             return t; 
         }).Unwrap();
 }
Ejemplo n.º 9
0
        public void SettingContentShouldBePassedToTheRequest()
        {
            var link = new Link
            {
                Target = new Uri("Http://localhost"),
                Method = HttpMethod.Post,
                Content = new StringContent("Hello World")
            };

            var request = link.CreateRequest();

            Assert.Equal(request.Content.ReadAsStringAsync().Result, "Hello World");
        }
Ejemplo n.º 10
0
        public void SettingAnAcceptHeaderShouldBePassedToTheRequest()
        {
            var link = new Link
            {
                Target = new Uri("Http://localhost"),
                
            };
            link.AddRequestBuilder(new InlineRequestBuilder((r) =>
            {
                r.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.hal"));
                r.Headers.UserAgent.Add(new ProductInfoHeaderValue("foo", "1.1"));
                return r;
            }));


            var request = link.CreateRequest();

            Assert.True(request.Headers.Accept.Any(h => h.MediaType == "application/vnd.hal"));
        }
        public static Task<HttpResponseMessage> EmbedLinkAsync(this HttpClient httpClient, Link link, IEmbedTarget embedTarget)
        {
            return httpClient.SendAsync(link.CreateRequest())
                .ContinueWith(t =>
                {
                    if (t.Status == TaskStatus.RanToCompletion)
                    {
                        if (link.HttpResponseHandler != null)
                        {
                            return link.HandleResponseAsync(t.Result)
                                       .ContinueWith(t2 =>
                                           embedTarget.EmbedContent(link, t2.Result.Content).ContinueWith(t4 => t2.Result)
                                         ).Unwrap();
                        }
                        return embedTarget.EmbedContent(link, t.Result.Content)
                            .ContinueWith(t3 => t.Result);
                    }

                    return t;
                }).Unwrap();
        }
Ejemplo n.º 12
0
        public static Task <HttpResponseMessage> EmbedLinkAsync(this HttpClient httpClient, Link link, IEmbedTarget embedTarget)
        {
            return(httpClient.SendAsync(link.CreateRequest())
                   .ContinueWith(t =>
            {
                if (t.Status == TaskStatus.RanToCompletion)
                {
                    if (link.HttpResponseHandler != null)
                    {
                        return link.HandleResponseAsync(t.Result)
                        .ContinueWith(t2 =>
                                      embedTarget.EmbedContent(link, t2.Result.Content).ContinueWith(t4 => t2.Result)
                                      ).Unwrap();
                    }
                    return embedTarget.EmbedContent(link, t.Result.Content)
                    .ContinueWith(t3 => t.Result);
                }

                return t;
            }).Unwrap());
        }
Ejemplo n.º 13
0
        public void UploadFileToSkyDrive()
        {
            ServicePointManager.Expect100Continue = false;

            var content = new StreamContent(new FileStream("C:\\Users\\Darrel\\Pictures\\868.jpg",FileMode.Open));

            var link = new Link {
                Target = new Uri("https://apis.live.net/v5.0/me/skydrive/files/{filename}{?access_token}"),
                Method = HttpMethod.Put,
                Content = content
            };

            link.SetParameter("access_token", "EwAwAq1DBAAUGCCXc8wU/zFu9QnLdZXy+YnElFkAAS/+qh/DHgp3W+UIGoihj9+udq6NrLD+s8hQ51NxPcii0QKiV0Vcd/n8w01XHFxpqboQblkhywILJ+CgOdsg0e8UgzPPjt4pmhWoRShFaGrANtUHzzfxmonXTZ8QGPBU9wGmqmfBpEe1KH51q/UiAEGP4t/twPyu3m68Q8ANh0FBlORNmQXAmkIhImuEHbQm+K5Xfi0EoZ2bLdimY1OwCQnUgSlVPj4raodooGOH0ZlkyUrd3VfH0Jwc90HkiOLfxWvspaA/px5NDLwBxb8Xo1B6Y7VMhA6poaPn1jf+y2sfFi0I7ToklBb+n7GTQJ9EiWfxf0mDX2hj1PbvLsYffGkDZgAACKqqGYH2n911AAHEORFJ5DYFe4zF1V4lcljDsWvil0CWOmbOsCsWMHGCs29qFIu/ZJzkAHYZk7Lg5meFsnQVdAnEWO2j7NEJJuI118VuBNasJfkV208nq4K/B5K/QrM/ZxqYG9IjMHnGbpcZSisKT8TkPK4z7yvR6f+ap6Zx9cGLjwS0WajHGCBjyiNPDV7UoP3Rmnr1fzwivdplydgQg9aE4BV9hYn/2nBX3e6c0OfFDFQzinJukJesc/2zgYf4tR9b8L4qmtXDYCp0d7akVxmzdXFb/b71gLZmHFHCrPSv8t4f0NIllKhCBhiFyitOGu3iBRpSy6jPgkaSp2NwBu/WICrgae1wEITrAAA=");
            link.SetParameter("filename","868.jpg");
            var req = link.CreateRequest();

            var client = new HttpClient();

            var response = client.SendAsync(req).Result;

            var body = response.Content.ReadAsStringAsync().Result;
        }
Ejemplo n.º 14
0
        public void SOQuestion18302092()
        {
            var link = new Link();
            link.Target = new Uri("http://www.myBase.com/get{?a,b}");

            link.SetParameter("a","1");
            link.SetParameter("b", "c");

            var request = link.CreateRequest();
            Assert.Equal("http://www.myBase.com/get?a=1&b=c", request.RequestUri.OriginalString);
        }
Ejemplo n.º 15
0
        private void InternalNavigateTo(Link link) {

            link.MakeAbsolute(CurrentLocation);

            HttpResponseMessage response;

            var content = _SemanticsRegistry.GetPreregisteredContent(link);
            if (content != null) {
                response = new HttpResponseMessage(HttpStatusCode.OK) { Content = content };
            } else {
                HttpRequestMessage request = link.CreateRequest();
                response = _HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result;
            }

            HandleResponse(response, link);
        }
Ejemplo n.º 16
0
        public void UnsetParameterInLink()
        {
            var link = new Link() { Target = new Uri("http://localhost/{?foo}") };
            link.SetParameter("foo", "bar");
            link.UnsetParameter("foo");

            var request = link.CreateRequest();

            Assert.Equal("http://localhost/", request.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 17
0
        public void SpecifyHandlerForAllowhint()
        {
            var foo = false;

            var registry = new HintFactory();
            registry.SetHandler<AllowHint>((h, r) =>
                { foo = true;
                    return r;
                });

            var hint = registry.CreateHint<AllowHint>();

            var link = new Link();
            link.AddHint(hint);

            // Act
            var request = link.CreateRequest();

            Assert.Equal(foo,true);
        }
Ejemplo n.º 18
0
        public void AddMultipleParametersToLink()
        {
            var link = new Link() { Template = new UriTemplate("http://localhost/api/{dataset}/customer{?foo,bar,baz}") };

            link.Template.ApplyParametersToTemplate(new Dictionary<string, object>
            {
                {"foo", "bar"},
                {"baz", "99"},
                {"dataset", "bob"}
            });

            var request = link.CreateRequest();
            
            Assert.Equal("http://localhost/api/bob/customer?foo=bar&baz=99", request.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 19
0
        public void RelativeLinkTemplate()
        {
            var link = new Link { Template = new UriTemplate("/foo/{bar}") };

            link.Template.AddParameter("bar", "baz");

            var req = link.CreateRequest();

            Assert.Equal("/foo/baz", req.RequestUri.OriginalString);
            
        }
Ejemplo n.º 20
0
        public void SettingAnAcceptHeaderShouldBePassedToTheRequest()
        {
            var link = new Link { Target = new Uri("Http://localhost") };

            var acceptHeader = new MediaTypeWithQualityHeaderValue("application/vnd.hal");
            link.RequestHeaders.Accept.Add(acceptHeader);

            var request = link.CreateRequest();

            Assert.True(request.Headers.Accept.Where(h => h.MediaType == "application/vnd.hal").Any());
        }
        public async Task Private_caching_with_encoding_vary_header()
        {

            var client = CreateCachingEnabledClient();

            var linkCompressed = new Link()
            {
                Target = new Uri("/VaryingCompressedContent", UriKind.Relative)
            };
            linkCompressed.RequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));

            var linkUnCompressed = new Link()
            {
                Target = new Uri("/VaryingCompressedContent", UriKind.Relative)
            };
            linkUnCompressed.RequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("identity"));

            var response = await client.SendAsync(linkCompressed.CreateRequest());
            var content = await response.Content.ReadAsStringAsync();
            HttpAssert.FromServer(response);

            var response2 = await client.SendAsync(linkCompressed.CreateRequest());
            var content2 = await response2.Content.ReadAsStringAsync();
            HttpAssert.FromCache(response2);

            var response3 = await client.SendAsync(linkUnCompressed.CreateRequest());
            var content3 = await response3.Content.ReadAsStringAsync();
            HttpAssert.FromServer(response3);

            var response4 = await client.SendAsync(linkUnCompressed.CreateRequest());
            var content4 = await response4.Content.ReadAsStringAsync();
            HttpAssert.FromCache(response4);

            var response5 = await client.SendAsync(linkCompressed.CreateRequest());
            var content5 = await response5.Content.ReadAsStringAsync();
            HttpAssert.FromCache(response5);
        }
        public async Task Private_caching_accept_language_vary_header_and_request_with_no_accept_language()
        {
            var client = CreateCachingEnabledClient();

            var linkEnglish = new Link()
            {
                Target = new Uri("/VaryingCacheableResource", UriKind.Relative)
            };
            linkEnglish.RequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en"));
            
            var response = await client.SendAsync(linkEnglish.CreateRequest());
            HttpAssert.FromServer(response);

            linkEnglish.RequestHeaders.AcceptLanguage.Clear();
            var response2 = await client.SendAsync(linkEnglish.CreateRequest());

            HttpAssert.FromServer(response2);
        }
Ejemplo n.º 23
0
        public void UnsetParameterInLink()
        {
            var link = new Link() { Template = new UriTemplate("http://localhost/{?foo}") };

            var request = link.CreateRequest();

            Assert.Equal("http://localhost/", request.RequestUri.AbsoluteUri);
        }
        public async Task Private_caching_with_accept_language_vary_header()
        {
            var client = CreateCachingEnabledClient();

            var linkEnglish = new Link()
            {
                Target = new Uri("/VaryingCacheableResource", UriKind.Relative)
            };
            linkEnglish.RequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en"));

            var linkFrench = new Link()
            {
                Target = new Uri("/VaryingCacheableResource", UriKind.Relative)
            };
            linkFrench.RequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("fr"));

            var response = await client.SendAsync(linkEnglish.CreateRequest());
            Assert.Equal("This is cached content", await response.Content.ReadAsStringAsync());
            HttpAssert.FromServer(response);

            var responseExplicitEn = await client.SendAsync(linkEnglish.CreateRequest());
            var content = await responseExplicitEn.Content.ReadAsStringAsync();
            Assert.Equal("This is cached content", content);
            HttpAssert.FromCache(responseExplicitEn);

            var responseExplicitEn2 = await client.SendAsync(linkEnglish.CreateRequest());
            var content2 = await responseExplicitEn2.Content.ReadAsStringAsync();
            Assert.Equal("This is cached content", content2);
            HttpAssert.FromCache(responseExplicitEn2);

            var responseExplicitFr = await client.SendAsync(linkFrench.CreateRequest());
            Assert.Equal("Ce donnée est caché", await responseExplicitFr.Content.ReadAsStringAsync());
            HttpAssert.FromServer(responseExplicitFr);

            var responseExplicitFr2 = await client.SendAsync(linkFrench.CreateRequest());
            Assert.Equal("Ce donnée est caché", await responseExplicitFr2.Content.ReadAsStringAsync());
            HttpAssert.FromCache(responseExplicitFr2);

            var responseExplicitEn3 = await client.SendAsync(linkEnglish.CreateRequest());
            Assert.Equal("This is cached content", await responseExplicitEn3.Content.ReadAsStringAsync());
            HttpAssert.FromCache(responseExplicitEn3);

        }
Ejemplo n.º 25
0
        public void UseURITemplateAsLinkSource()
        {
            var link = new Link { Target = new Uri("Http://localhost") }; 
            var client = new HttpClient(new FakeMessageHandler());

            var response = client.SendAsync(link.CreateRequest()).Result;

            Assert.Equal("http://localhost/", response.RequestMessage.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 26
0
        public void UseRouteDataToResolveUriTemplate()
        {
            var routeData = new PathRouteData(new Uri("http://foo"), 0);

            routeData.Values.Add("foo","1");
            routeData.Values.Add("bar", "2");
            routeData.Values.Add("baz", 3);
            var link = new Link() {Target = new Uri("http://localhost/{?foo,bar,baz}")};
            foreach (var value in routeData.Values)
            {
                link.SetParameter(value.Key,value.Value);
            }
            var request = link.CreateRequest();

            Assert.Equal("http://localhost/?foo=1&bar=2&baz=3", request.RequestUri.AbsoluteUri);
        }
Ejemplo n.º 27
0
        public void SetListParameterInLink()
        {
            var link = new Link() { Target = new Uri("http://localhost/{?foo}") };
            link.SetParameter("foo", new List<string>(){ "bar","baz","bler"});

            var request = link.CreateRequest();

            Assert.Equal("http://localhost/?foo=bar,baz,bler", request.RequestUri.AbsoluteUri);
        }