Пример #1
0
        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;
        }
Пример #2
0
        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()));
        }
Пример #3
0
        // 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));
            }
        }