Exemplo n.º 1
0
        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);
                });

        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        public static T CreateLink <T>(this LinkFactory linkFactory, Uri target) where T : Link, new()
        {
            var link = linkFactory.CreateLink <T>();

            link.Target = target;
            return(link);
        }
Exemplo n.º 5
0
        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);
            }));
        }
Exemplo n.º 6
0
        public void CreateAboutLink()
        {
            var registry = new LinkFactory();

            var link = registry.CreateLink<AboutLink>();

            Assert.IsType<AboutLink>(link);
        }
Exemplo n.º 7
0
        public void CreateAboutLink()
        {
            var registry = new LinkFactory();

            var link = registry.CreateLink <AboutLink>();

            Assert.IsType <AboutLink>(link);
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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));
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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;
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        // 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());
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        // 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());
        }
Exemplo n.º 22
0
        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());
        }
Exemplo n.º 23
0
        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());
        }
Exemplo n.º 24
0
        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);
            }
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
        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;
        }
Exemplo n.º 27
0
        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());
        }
Exemplo n.º 28
0
        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);
                });
        }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
        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);
        }
Exemplo n.º 31
0
        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);
        }
Exemplo n.º 32
0
        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);
        }
Exemplo n.º 33
0
        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);
        }
Exemplo n.º 34
0
        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);
        }