public static string BuildPath(string basePath, RequestOptions options) { var path = basePath; if (!path.EndsWith("/")) path += "/"; if (options?.SearchQuery != null) path = path.AddQueryParam("query", options.SearchQuery); if (options?.Fields?.Any() == true) { var fields = string.Join(",", options.Fields); path = path.AddQueryParam("fields", fields); } if (options?.Cursor != null) path = path.AddQueryParam("cursor", options.Cursor); if (options?.Limit > 0) path = path.AddQueryParam("limit", options.Limit); return path; }
private async Task <T> PostAsync <T>(string path, object value, RequestOptions options = null) { var content = await PostAsyncInternal(path, value, options).ConfigureAwait(false); return(JsonConvert.DeserializeObject <T>(content.data.ToString())); }
// TODO: NOTE: Returns null if not found (404) private async Task <PagedApiResponse <IEnumerable <T> > > GetPagedAsync <T>(string path, RequestOptions options = null) { path = PathBuilder.BuildPath(path, options); using (var response = await Client.GetAsync(path).ConfigureAwait(false)) { UpdateRateLimits(response.Headers); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } if (!response.IsSuccessStatusCode) { throw await CreateException(response).ConfigureAwait(false); } var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); return(JsonConvert.DeserializeObject <PagedApiResponse <IEnumerable <T> > >(content)); } }