Example #1
0
        public void BuildComplexUrl_Finder()
        {
            string expected = String.Format("http://testprefix/foo/1/bar/List(foo,2,3)/baz/(deeper:List(found,it,{0}))/biz?q={1}", complexStringEscapedPath, complexStringEscapedQuery);

            FinderRequestBuilder <Greeting, EmptyRecord> requestBuilder = new FinderRequestBuilder <Greeting, EmptyRecord>("foo/{one}/bar/{list}/baz/{complex}/biz");

            requestBuilder.Name(complexString);
            requestBuilder.SetPathKey("one", 1);
            requestBuilder.SetPathKey("list", new List <object>()
            {
                "foo", 2, 3
            });
            requestBuilder.SetPathKey("complex", new Dictionary <string, object>()
            {
                { "deeper", new List <object>()
                  {
                      "found", "it", complexString
                  } }
            });

            FinderRequest <Greeting, EmptyRecord> request = requestBuilder.Build();

            RequestUrlBuilder <CollectionResponse <Greeting, EmptyRecord> > urlBuilder = new RequestUrlBuilder <CollectionResponse <Greeting, EmptyRecord> >(request, "http://testprefix");
            Uri url = urlBuilder.Build();

            Assert.AreEqual(expected, url.AbsoluteUri);
        }
        public void FinderGreeting_Async()
        {
            RestClient client = new RestClient(urlPrefix);

            FinderRequestBuilder <Greeting, EmptyRecord> requestBuilder = new FinderRequestBuilder <Greeting, EmptyRecord>("/basicCollection");

            requestBuilder.Name("search");
            requestBuilder.SetParam("tone", Tone.Symbol.FRIENDLY);
            FinderRequest <Greeting, EmptyRecord> request = requestBuilder.Build();

            AutoResetEvent blocker = new AutoResetEvent(false);

            CollectionResponse <Greeting, EmptyRecord> collectionResponse = null;
            ClientErrorResponse errorResponse = null;

            RestliCallback <CollectionResponse <Greeting, EmptyRecord> > .SuccessHandler successHandler = delegate(CollectionResponse <Greeting, EmptyRecord> response)
            {
                collectionResponse = response;
                blocker.Set();
            };
            RestliCallback <CollectionResponse <Greeting, EmptyRecord> > .ErrorHandler errorHandler = delegate(ClientErrorResponse response)
            {
                errorResponse = response;
                blocker.Set();
            };
            RestliCallback <CollectionResponse <Greeting, EmptyRecord> > callback = new RestliCallback <CollectionResponse <Greeting, EmptyRecord> >(successHandler, errorHandler);

            client.RestRequestAsync(request, callback);

            blocker.WaitOne(asyncTimeoutMillis);

            Assert.IsNull(errorResponse);

            IReadOnlyList <Greeting> greetings = collectionResponse.elements;

            Assert.IsTrue(greetings.Count() > 0);
            Assert.IsTrue(greetings.All(_ => _.message.Equals("search") && _.tone.symbol == Tone.Symbol.FRIENDLY));
            Assert.AreEqual(10, collectionResponse.paging.count);
            Assert.AreEqual(0, collectionResponse.paging.start);
            CollectionAssert.AllItemsAreInstancesOfType(collectionResponse.paging.links.ToList(), typeof(Link));
            Assert.AreEqual("application/json", collectionResponse.paging.links[0].type);
        }
        public void FinderGreeting_Sync()
        {
            RestClient client = new RestClient(urlPrefix);

            FinderRequestBuilder <Greeting, EmptyRecord> requestBuilder = new FinderRequestBuilder <Greeting, EmptyRecord>("/basicCollection");

            requestBuilder.Name("search");
            requestBuilder.SetParam("tone", Tone.Symbol.FRIENDLY);
            FinderRequest <Greeting, EmptyRecord> request = requestBuilder.Build();

            CollectionResponse <Greeting, EmptyRecord> response = client.RestRequestSync(request);

            IReadOnlyList <Greeting> greetings = response.elements;

            Assert.IsTrue(greetings.Count() > 0);
            Assert.IsTrue(greetings.All(_ => _.message.Equals("search") && _.tone.symbol == Tone.Symbol.FRIENDLY));
            Assert.AreEqual(10, response.paging.count);
            Assert.AreEqual(0, response.paging.start);
            CollectionAssert.AllItemsAreInstancesOfType(response.paging.links.ToList(), typeof(Link));
            Assert.AreEqual("application/json", response.paging.links[0].type);
        }