public async Task Get_a_user() { var homeLink = _linkFactory.CreateLink <HomeLink>(new Uri("https://api.github.com")); await _httpClient.FollowLinkAsync(homeLink); var userLink = _clientstate.HomeDocument.GetLink <UserLink>(); userLink.User = "******"; await _httpClient.FollowLinkAsync(userLink); var userDoc = _clientstate.LastDocument; var followersCount2 = _clientstate.CurrentUser.Followers; var followersCount = (int)userDoc.Properties["followers"]; var followersLink = userDoc.GetLink <FollowersLink>(); await _httpClient.FollowLinkAsync(followersLink); var followers = _clientstate.LastDocument; _clientstate.ClearList(); foreach (var doc in followers.Items) { var itemLink = doc.GetLink <ItemLink>(); await _httpClient.FollowLinkAsync(itemLink); } var results = _clientstate.List.Select(s => UserLink.InterpretResponse(s)).Where(u => u.Hireable && u.Followers > 50).ToList(); }
public Task SpecifyHandlerChainForAboutLink() { var foo = false; var bar = false; var baz = false; var registry = new LinkFactory(); var grh = new InlineResponseHandler((rel,hrm) => baz = true, new InlineResponseHandler((rel, hrm) => foo = true, new InlineResponseHandler((rel, hrm) => bar = true))); var machine = new HttpResponseMachine(); machine.AddResponseHandler(grh.HandleResponseAsync, System.Net.HttpStatusCode.OK); var link = registry.CreateLink<AboutLink>(); link.Target = new Uri("http://example.org"); var httpClient = new HttpClient(new FakeHandler() { Response = new HttpResponseMessage()}); return httpClient.FollowLinkAsync(link,machine).ContinueWith(t => { Assert.True(foo); Assert.True(bar); Assert.True(baz); }); }
public void Add_accept_header_to_stylesheet_link() { var linkFactory = new LinkFactory(); var builders = new List <DelegatingRequestBuilder>() { new AcceptHeaderRequestBuilder(new[] { new MediaTypeWithQualityHeaderValue("text/css") }), new InlineRequestBuilder(r => { r.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); return(r); }) }; linkFactory.SetRequestBuilder <StylesheetLink>(builders); var aboutlink = linkFactory.CreateLink <StylesheetLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("text/css", request.Headers.Accept.ToString()); Assert.Equal("gzip", request.Headers.AcceptEncoding.ToString()); }
public static T CreateLink <T>(this LinkFactory linkFactory, Uri target) where T : Link, new() { var link = linkFactory.CreateLink <T>(); link.Target = target; return(link); }
public Task SpecifyHandlerChainForAboutLink() { var foo = false; var bar = false; var baz = false; var registry = new LinkFactory(); var grh = new InlineResponseHandler((rel, hrm) => baz = true, new InlineResponseHandler((rel, hrm) => foo = true, new InlineResponseHandler((rel, hrm) => bar = true))); var machine = new HttpResponseMachine(); machine.AddResponseHandler(grh.HandleResponseAsync, System.Net.HttpStatusCode.OK); var link = registry.CreateLink <AboutLink>(); link.Target = new Uri("http://example.org"); var httpClient = new HttpClient(new FakeHandler() { Response = new HttpResponseMessage() }); return(httpClient.FollowLinkAsync(link, machine).ContinueWith(t => { Assert.True(foo); Assert.True(bar); Assert.True(baz); })); }
public void CreateAboutLink() { var registry = new LinkFactory(); var link = registry.CreateLink<AboutLink>(); Assert.IsType<AboutLink>(link); }
public void CreateAboutLink() { var registry = new LinkFactory(); var link = registry.CreateLink <AboutLink>(); Assert.IsType <AboutLink>(link); }
private static void TestCreateLink(string caption, string uri) { var linkFactory = new LinkFactory(); linkFactory.CreateLink(caption, uri); string expected = uri; Assert.True(linkFactory.ParseLink(caption + "#" + uri, out var actualUri)); Assert.That(actualUri.AbsoluteUri, Is.EqualTo(expected)); }
private static void TestCreateLink(string caption, string uri) { var linkFactory = new LinkFactory(); linkFactory.CreateLink(caption, uri); string actual = linkFactory.ParseLink(caption + "#" + uri); string expected = uri; Assert.That(actual, Is.EqualTo(expected)); }
public void Use_non_get_method() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink <RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Method = HttpMethod.Head; var request = relatedLink.CreateRequest(); Assert.Equal(HttpMethod.Head, request.Method); }
public void Create_request_that_has_a_body() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink <RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Method = HttpMethod.Post; relatedLink.Content = new StringContent(""); var request = relatedLink.CreateRequest(); Assert.Equal(HttpMethod.Post, request.Method); }
public void Set_query_parameters_without_template() { var linkFactory = new LinkFactory(); var aboutlink = linkFactory.CreateLink <RelatedLink>(new Uri("http://example.org/customer")); aboutlink.Template = new UriTemplate(aboutlink.Target.AbsoluteUri + "{?id}"); aboutlink.Template.SetParameter("id", 45); var request = aboutlink.CreateRequest(); Assert.Equal("http://example.org/customer?id=45", request.RequestUri.OriginalString); }
public void SpecifyHandlerForAboutLink() { var foo = false; var registry = new LinkFactory(); registry.SetHandler<AboutLink>(new ActionResponseHandler((hrm) => foo = true)); var link = registry.CreateLink<AboutLink>(); Assert.IsType<ActionResponseHandler>(link.HttpResponseHandler); }
public void Set_path_parameters() { var linkFactory = new LinkFactory(); var aboutlink = linkFactory.CreateLink <RelatedLink>(); aboutlink.Template = new UriTemplate("http://example.org/customer/{id}"); aboutlink.Template.AddParameter("id", 45); var request = aboutlink.CreateRequest(); Assert.Equal("http://example.org/customer/45", request.RequestUri.OriginalString); }
private async Task<HomeDocument> GetHomeDocument() { var linkFactory = new LinkFactory(); ConferenceWebPack.Config.Register(linkFactory); var homeLink = linkFactory.CreateLink<HomeLink>(); homeLink.Target = new Uri("http://birch:1001/"); var response = await _client.SendAsync(homeLink.BuildRequestMessage()); var homeDocument = await homeLink.ParseResponse(response, linkFactory); return homeDocument; }
public void Remove_a_query_parameters() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink <RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Template = relatedLink.Target.MakeTemplate(); relatedLink.Template.ClearParameter("format"); var request = relatedLink.CreateRequest(); Assert.Equal("http://example.org/customer?id=23", request.RequestUri.OriginalString); }
public override IEnumerable <IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results) { if (null == request) { throw new ArgumentNullException("request"); } if (null == results) { throw new ArgumentNullException("results"); } var list = new List <IPageLinkModel>(); if (results.TotalPageCount > 1) { var requestedPage = request.RequestedPage; var totalPageCount = results.TotalPageCount; var factory = new LinkFactory(request, IsBase1); list.Add(factory.CreateLink(0)); if (requestedPage > 1) { var test = requestedPage == totalPageCount - 1 && totalPageCount > 3; list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2)); if (test) { list.Add(factory.CreateLink(requestedPage - 2)); } list.Add(factory.CreateLink(requestedPage - 1)); } if (requestedPage != 0 && requestedPage != totalPageCount - 1) { list.Add(factory.CreateLink(requestedPage)); } if (requestedPage < totalPageCount - 2) { var test = requestedPage == 0 && totalPageCount > 3; list.Add(factory.CreateLink(requestedPage + 1)); if (test) { list.Add(factory.CreateLink(requestedPage + 2)); } list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2)); } list.Add(factory.CreateLink(totalPageCount - 1)); } return(list); }
// This is bogus too. Also should be done by HttpClient Message handler public void Add_auth_header_aboutlink_request() { var linkFactory = new LinkFactory(); linkFactory.SetRequestBuilder<AboutLink>(new InlineRequestBuilder( r => { r.Headers.Authorization = new AuthenticationHeaderValue("foo", "bar"); return r; })); var aboutlink = linkFactory.CreateLink<AboutLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("foo bar", request.Headers.Authorization.ToString()); }
private async Task <HomeDocument> GetHomeDocument() { var linkFactory = new LinkFactory(); ConferenceWebPack.Config.Register(linkFactory); var homeLink = linkFactory.CreateLink <HomeLink>(); homeLink.Target = new Uri("http://birch:1001/"); var response = await _client.SendAsync(homeLink.BuildRequestMessage()); var homeDocument = await homeLink.ParseResponse(response, linkFactory); return(homeDocument); }
public void Update_query_parameters() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink <RelatedLink>(); relatedLink.Target = new Uri("http://example.org/customer?id=23"); relatedLink.Template = new UriTemplate(relatedLink.Target.GetLeftPart(UriPartial.Path) + "{?id}"); relatedLink.Template.AddParameter("id", 45); //relatedLink.Template.AddParameters(parameters,true); var request = relatedLink.CreateRequest(); Assert.Equal("http://example.org/customer?id=45", request.RequestUri.OriginalString); }
// This is bogus too. Also should be done by HttpClient Message handler public void Add_auth_header_aboutlink_request() { var linkFactory = new LinkFactory(); linkFactory.SetRequestBuilder <AboutLink>(new InlineRequestBuilder( r => { r.Headers.Authorization = new AuthenticationHeaderValue("foo", "bar"); return(r); })); var aboutlink = linkFactory.CreateLink <AboutLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("foo bar", request.Headers.Authorization.ToString()); }
public void Add_user_Agent_header() { var linkFactory = new LinkFactory(); linkFactory.SetRequestBuilder <AboutLink>(new InlineRequestBuilder(r => { r.Headers.UserAgent.Add(new ProductInfoHeaderValue("MyApp", "1.0")); return(r); })); var aboutlink = linkFactory.CreateLink <AboutLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("MyApp/1.0", request.Headers.UserAgent.ToString()); }
public void Add_user_Agent_header() { var linkFactory = new LinkFactory(); linkFactory.SetRequestBuilder<AboutLink>(new InlineRequestBuilder(r => { r.Headers.UserAgent.Add(new ProductInfoHeaderValue("MyApp", "1.0")); return r; })); var aboutlink = linkFactory.CreateLink<AboutLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("MyApp/1.0", request.Headers.UserAgent.ToString()); }
private string GetLinksForRevision(GitRevision revision) { GitExtLinksParser parser = new GitExtLinksParser(Module.EffectiveSettings); var links = parser.Parse(revision).Distinct(); var linksString = string.Empty; foreach (var link in links) { linksString = linksString.Combine(", ", LinkFactory.CreateLink(link.Caption, link.URI)); } if (linksString.IsNullOrEmpty()) { return(string.Empty); } else { return(WebUtility.HtmlEncode(trsLinksRelatedToRevision.Text) + " " + linksString); } }
public void TestConnect() { NetElementLinkBase link = LinkFactory.CreateLink(ConnectType.ATP_DIRECT_LINK) as NetElementLinkBase; Assert.AreEqual(NetElementLinkBase.LinkState.Disconnected, link.State); Assert.IsTrue(link.IsBreak); try { link.Connect(null); } catch (ArgumentNullException e) { Assert.AreEqual("netElementAddress is null", e.ParamName); } NetElementConfig config = new NetElementConfig() { TraceIp = "172.27.245.82", TargetIp = "172.27.245.92", AgentSlot = 2, Index = 3, FrameNo = 0, SlotNo = 0, conType = ConnectType.ATP_DIRECT_LINK }; link.Connect(config); Assert.AreEqual(NetElementLinkBase.LinkState.Connecting, link.State); Assert.IsFalse(link.IsBreak); link.OnLogonResult(true); Assert.AreEqual(NetElementLinkBase.LinkState.Connencted, link.State); Assert.IsFalse(link.IsBreak); link.Disconnect(); Assert.AreEqual(NetElementLinkBase.LinkState.Disconnected, link.State); Assert.IsTrue(link.IsBreak); }
public override IEnumerable<IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results) { if (null == request) throw new ArgumentNullException("request"); if (null == results) throw new ArgumentNullException("results"); var list = new List<IPageLinkModel>(); if (results.TotalPageCount > 1) { var requestedPage = request.RequestedPage; var totalPageCount = results.TotalPageCount; var factory = new LinkFactory(request, IsBase1); list.Add(factory.CreateLink(0)); if (requestedPage > 1) { var test = requestedPage == totalPageCount - 1 && totalPageCount > 3; list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2)); if (test) { list.Add(factory.CreateLink(requestedPage - 2)); } list.Add(factory.CreateLink(requestedPage - 1)); } if (requestedPage != 0 && requestedPage != totalPageCount - 1) { list.Add(factory.CreateLink(requestedPage)); } if (requestedPage < totalPageCount - 2) { var test = requestedPage == 0 && totalPageCount > 3; list.Add(factory.CreateLink(requestedPage + 1)); if (test) { list.Add(factory.CreateLink(requestedPage + 2)); } list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2)); } list.Add(factory.CreateLink(totalPageCount - 1)); } return list; }
public void Add_accept_header_to_stylesheet_link() { var linkFactory = new LinkFactory(); var builders = new List<DelegatingRequestBuilder>() { new AcceptHeaderRequestBuilder(new[] {new MediaTypeWithQualityHeaderValue("text/css")}), new InlineRequestBuilder(r => { r.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); return r; }) }; linkFactory.SetRequestBuilder<StylesheetLink>(builders); var aboutlink = linkFactory.CreateLink<StylesheetLink>(); aboutlink.Target = new Uri("http://example.org/about"); var request = aboutlink.CreateRequest(); Assert.Equal("text/css", request.Headers.Accept.ToString()); Assert.Equal("gzip", request.Headers.AcceptEncoding.ToString()); }
public Task SpecifyHandlerChainForAboutLink() { var foo = false; var bar = false; var baz = false; var registry = new LinkFactory(); var grh = new ActionResponseHandler((hrm) => baz = true, new ActionResponseHandler((hrm) => foo = true, new ActionResponseHandler((hrm) => bar = true))); registry.SetHandler<AboutLink>(grh); var link = registry.CreateLink<AboutLink>(); link.Target = new Uri("http://example.org"); var httpClient = new HttpClient(new FakeHandler() { Response = new HttpResponseMessage()}); return httpClient.FollowLinkAsync(link).ContinueWith(t => { Assert.True(foo); Assert.True(bar); Assert.True(baz); }); }
public void Set_query_parameters_without_template() { var linkFactory = new LinkFactory(); var aboutlink = linkFactory.CreateLink<RelatedLink>(new Uri("http://example.org/customer")); aboutlink.Template = new UriTemplate(aboutlink.Target.AbsoluteUri + "{?id}"); aboutlink.Template.SetParameter("id", 45); var request = aboutlink.CreateRequest(); Assert.Equal("http://example.org/customer?id=45", request.RequestUri.OriginalString); }
public void Set_path_parameters() { var linkFactory = new LinkFactory(); var aboutlink = linkFactory.CreateLink<RelatedLink>(); aboutlink.Template = new UriTemplate("http://example.org/customer/{id}"); aboutlink.Template.AddParameter("id", 45 ); var request = aboutlink.CreateRequest(); Assert.Equal("http://example.org/customer/45", request.RequestUri.OriginalString); }
public void Create_request_that_has_a_body() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink<RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Method = HttpMethod.Post; relatedLink.Content = new StringContent(""); var request = relatedLink.CreateRequest(); Assert.Equal(HttpMethod.Post, request.Method); }
public void Use_non_get_method() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink<RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Method = HttpMethod.Head; var request = relatedLink.CreateRequest(); Assert.Equal(HttpMethod.Head, request.Method); }
public void Remove_a_query_parameters() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink<RelatedLink>(new Uri("http://example.org/customer?format=xml&id=23")); relatedLink.Template = relatedLink.Target.MakeTemplate(); relatedLink.Template.ClearParameter("format"); var request = relatedLink.CreateRequest(); Assert.Equal("http://example.org/customer?id=23", request.RequestUri.OriginalString); }
public void Update_query_parameters() { var linkFactory = new LinkFactory(); var relatedLink = linkFactory.CreateLink<RelatedLink>(); relatedLink.Target = new Uri("http://example.org/customer?id=23"); relatedLink.Template = new UriTemplate(relatedLink.Target.GetLeftPart(UriPartial.Path) + "{?id}"); relatedLink.Template.AddParameter("id",45); //relatedLink.Template.AddParameters(parameters,true); var request = relatedLink.CreateRequest(); Assert.Equal("http://example.org/customer?id=45", request.RequestUri.OriginalString); }