async Task <T[]> _GetEventsAsync() { var query = new Dictionary <string, string>(); query["q"] = "*"; if (_pattern != null) { query["q"] = _pattern(default(FilteredEvents.Event))._pattern; } if (_timeRange != null) { var t = _timeRange(default(DatedEvents.Event)); if (t._start != default(DateTimeOffset)) { query["from"] = t._start.ToString("yyyy-MM-dd HH:mm:ss.fffzzzz"); } if (t._end != default(DateTimeOffset)) { query["until"] = t._end.ToString("yyyy-MM-dd HH:mm:ss.fffzzzz"); } } if (!_descending) { query["order"] = "asc"; } if (_selector != null) // should never be null { var fields = Fields.Collect(_selector.Body); if (fields != null) { query["fields"] = string.Join(",", fields); } } if (_skip > 0) { query["start"] = _skip.ToString(); } if (_take > 0 && _take != 10) { query["rows"] = _take.ToString(); } var queryString = string.Join("&", query.Select(kv => string.Format("{0}={1}", kv.Key, kv.Value))); var response = await _client.GetAsync(string.Format("search?{0}", queryString)); if (response.IsSuccessStatusCode) { var results = await response.Content.ReadAsStringAsync(); var raw = SearchResults.Parse(results); var transform = _selector.Compile(); return(raw.Select(transform).ToArray()); } else { return(new T[] {}); } }