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); }
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)); }
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)); }
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); }