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); }
public void DefaultLinkShouldCreateAGetRequest() { var link = new Link() { Target = new Uri("Http://localhost") }; var request = link.CreateRequest(); Assert.Equal(HttpMethod.Get,request.Method); }
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); }
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); }
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); }
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()); }
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(); }
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"); }
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(); }
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()); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }