Пример #1
0
        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).Configured())
            {
                var content = await response.Content.ReadAsStringAsync().Configured();

                return(JsonConvert.DeserializeObject <PagedApiResponse <IEnumerable <T> > >(content));
            }
        }
Пример #2
0
        private async Task <T> GetAsync <T>(string path, RequestOptions options = null)
        {
            path = PathBuilder.BuildPath(path, options);

            using (var response = await Client.GetAsync(path).Configured())
            {
                var content = await response.Content.ReadAsAsync <dynamic>().Configured();

                return(JsonConvert.DeserializeObject <T>(content.data.ToString()));
            }
        }
Пример #3
0
        private async Task <dynamic> PostAsyncInternal(string path, object value, RequestOptions options = null)
        {
            path = PathBuilder.BuildPath(path, options);

            using (var response = await Client.PostAsync(path, value).ConfigureAwait(false))
            {
                UpdateRateLimits(response.Headers);

                if (!response.IsSuccessStatusCode)
                {
                    throw await CreateException(response).ConfigureAwait(false);
                }

                return(await response.Content.ReadAsAsync <dynamic>().ConfigureAwait(false));
            }
        }
Пример #4
0
        private async Task <T> PatchAsync <T>(string path, object value, RequestOptions options = null)
        {
            path = PathBuilder.BuildPath(path, options);

            using (var response = await Client.PatchAsync(path, value).ConfigureAwait(false))
            {
                UpdateRateLimits(response.Headers);

                if (!response.IsSuccessStatusCode)
                {
                    throw await CreateException(response).ConfigureAwait(false);
                }

                var content = await response.Content.ReadAsAsync <dynamic>().ConfigureAwait(false);

                return(JsonConvert.DeserializeObject <T>(content.data.ToString()));
            }
        }
Пример #5
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));
            }
        }
Пример #6
0
        private async Task <dynamic> PostAsyncInternal(string path, object value, RequestOptions options = null)
        {
            path = PathBuilder.BuildPath(path, options);

            using (var response = await Client.PostAsync(path, value).Configured())
            {
                if (!response.IsSuccessStatusCode)
                {
                    var error = await response.Content.ReadAsAsync <dynamic>().Configured();

                    if (error.type == "api")
                    {
                        throw new PinterestApiException(error.message.ToString())
                              {
                                  Type = error.type, Param = error.param
                              }
                    }
                    ;
                    response.EnsureSuccessStatusCode();
                }
                return(await response.Content.ReadAsAsync <dynamic>().Configured());
            }
        }