public void Get(ICollectionRequest req) { var q = HttpUtility.ParseQueryString(req.Query); var name = q.Get("name")?.ToLower(); var country = q.Get("country"); int.TryParse(q.Get("from"), out int from); int.TryParse(q.Get("limit"), out int limit); if (from < 0) { from = 0; } if (limit <= 0) { limit = 10; } // Put a max on the query result size if (limit > 50) { req.InvalidQuery("Limit must be 50 or less."); return; } IEnumerable <Customer> result = null; if (String.IsNullOrEmpty(name)) { if (String.IsNullOrEmpty(country)) { result = customers.Find(Query.All("Name"), from, limit); } else { result = customers.Find(Query.And(Query.All("Name"), Query.Where("Country", v => v.AsString == country)), from, limit); } } else if (String.IsNullOrEmpty(country)) { result = customers.Find(Query.StartsWith("Name", name), from, limit); } else { result = customers.Find(Query.And(Query.StartsWith("Name", name), Query.Where("Country", v => v.AsString == country)), from, limit); } // Create a normalized query string with the properties in a set order. var normalizedQuery = String.Format("name={0}&country={1}&from={2}&limit={3}", name ?? "", country ?? "", from, limit); req.Collection(result.Select(c => new Ref("search.customer." + c.Id)), normalizedQuery); }
public async Task <List <T> > GetAllAsync <T, TY>(string path, ICollectionRequest request) where T : ExchangeDto where TY : IResponse { var stopwatch = new Stopwatch(); var total = 0; var count = 0; var returnModels = new List <T>(); do { using (var client = new ExchangeHttpClient(ExchangeConfig.RestUrl)) { stopwatch.Restart(); total += count; request.StartAt = total; var query = $"?{request.AsDictionary().BuildQueryString()}"; var authHeader = await GetHttpAuthHeader(HttpMethod.GET, path, query); var response = await client.GetAsync <TY>($"{path}{query}", authHeader); if (response == null) { throw new NullReferenceException(); } var models = response.Select(x => Mapper.Map <T>(x)).ToArray(); returnModels.AddRange(models); count = response.Length; if (count < request.Count) { count = 0; } if (stopwatch.Elapsed < TimeSpan.FromSeconds(1.01)) { await Task.Delay(TimeSpan.FromSeconds(1.5).Subtract(stopwatch.Elapsed)); } } } while (count > 0); return(returnModels); }
public void Get(ICollectionRequest req) { req.Collection(Countries.List); }
public void Get(ICollectionRequest request) { request.Collection(collection); }
public void Get(ICollectionRequest request) { // Pass the entire list of book references request.Collection(BookStore.GetBookList()); }