Example #1
0
        public Task <ListResults <T> > ExclusiveListAsync <T>(int limit        = 100,
                                                              string afterKey  = null,
                                                              string beforeKey = null)
        {
            if (limit < 1 || limit > 100)
            {
                throw new ArgumentOutOfRangeException("limit", "limit must be between 1 and 100");
            }

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AddQuery("limit", limit.ToString());

            if (!string.IsNullOrEmpty(beforeKey))
            {
                uri.AddQuery("beforeKey", beforeKey);
            }

            if (!string.IsNullOrEmpty(afterKey))
            {
                uri.AddQuery("afterKey", afterKey);
            }

            return(restClient.GetAsync <ListResults <T> >(uri));
        }
        public async Task <ListResults <T> > InclusiveListAsync <T>(int limit       = 100,
                                                                    string startKey = null,
                                                                    string endKey   = null)
        {
            if (limit < 1 || limit > 100)
            {
                throw new ArgumentOutOfRangeException("limit", "limit must be between 1 and 100");
            }

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AddQuery("limit", limit.ToString());

            if (!string.IsNullOrEmpty(startKey))
            {
                uri.AddQuery("startKey", startKey);
            }

            if (!string.IsNullOrEmpty(endKey))
            {
                uri.AddQuery("endKey", endKey);
            }

            var response = await restClient.GetAsync <ListResultsResponse <T> >(uri);

            return(response.ToResults(new Uri(host), restClient));
        }
        public void AddsMultipleValuesWithSameNameToUrl()
        {
            var builder = new HttpUrlBuilder("http://localhost");

            builder.AddQuery("name", "value1");
            builder.AddQuery("name", "value2");

            Assert.Equal("?name=value1&name=value2", builder.ToUri().Query);
        }
        public void AddsValueToUrl()
        {
            var builder = new HttpUrlBuilder("http://localhost");

            builder.AddQuery("name", "value");

            Assert.Equal("?name=value", builder.ToUri().Query);
        }
Example #5
0
        public Task <ListResults <T> > GetLinkAsync <T>(string key, string kind, LinkOptions opts = null)
        {
            Guard.ArgumentNotNullOrEmpty("key", key);
            Guard.ArgumentNotNullOrEmpty("kind", kind);

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AppendPath(key)
                                 .AppendPath("relations")
                                 .AppendPath(kind);

            if (opts != null)
            {
                uri.AddQuery("limit", opts.Limit.ToString());
                uri.AddQuery("offset", opts.Offset.ToString());
            }

            return(restClient.GetAsync <ListResults <T> >(uri));
        }
Example #6
0
        public Task <SearchResults <T> > SearchAsync <T>(string query, SearchOptions opts = null)
        {
            Guard.ArgumentNotNullOrEmpty("query", query);

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AddQuery("query", query);

            if (opts != null)
            {
                if (!String.IsNullOrEmpty(opts.Sort))
                {
                    uri.AddQuery("sort", opts.Sort);
                }

                uri.AddQuery("limit", opts.Limit.ToString());
                uri.AddQuery("offset", opts.Offset.ToString());
            }

            return(restClient.GetAsync <SearchResults <T> >(uri));
        }
Example #7
0
        public Task <ListResults <T> > HistoryAsync <T>(string productKey, HistoryOptions opts = null)
        {
            Guard.ArgumentNotNullOrEmpty("key", productKey);

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AppendPath(productKey)
                                 .AppendPath("refs");

            if (opts != null)
            {
                if (opts.Values == true)
                {
                    uri.AddQuery("values", "true");
                }

                uri.AddQuery("limit", opts.Limit.ToString());
                uri.AddQuery("offset", opts.Offset.ToString());
            }

            return(restClient.GetAsync <ListResults <T> >(uri));
        }
        public async Task <EventResults <T> > GetEventsAsync <T>(string key, string eventType, EventsOptions options = null)
        {
            Guard.ArgumentNotNullOrEmpty(nameof(key), key);
            Guard.ArgumentNotNullOrEmpty(nameof(eventType), eventType);

            HttpUrlBuilder uri = new HttpUrlBuilder(host)
                                 .AppendPath(CollectionName)
                                 .AppendPath(key)
                                 .AppendPath("events")
                                 .AppendPath(eventType);

            if (options != null)
            {
                uri.AddQuery("limit", options.Limit.ToString());
            }

            var response = await restClient.GetAsync <EventResultsResponse <T> >(uri);

            return(response.ToResults(new Uri(host), restClient));
        }
        public void EncodesName()
        {
            var builder = new HttpUrlBuilder("http://localhost");

            builder.AddQuery("na/me", "value");

            Assert.Equal("?na%2fme=value", builder.ToUri().Query);
        }
        public void WhenInitialUrlHasQueryString_AppendsQueryToExisting()
        {
            var builder = new HttpUrlBuilder("http://localhost?name1=value1");

            builder.AddQuery("name2", "value2");

            Assert.Equal("?name1=value1&name2=value2", builder.ToUri().Query);
        }