public virtual async Task <IRestApiResult <TResult> > PostAsync <TContent, TResult>( Priority priority, string path, TContent content = default(TContent), ProgressDelegate progressDelegate = null, IList <KeyValuePair <string, string> > headers = null, IHttpContentResolver httpContentResolver = null, IHttpResponseResolver httpResponseResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { var httpContent = ResolveHttpContent(content); var stream = await httpContent.ReadAsStreamAsync(); var progressContent = new ProgressStreamContent(httpContent.Headers, stream, cancellationToken) { Progress = progressDelegate }; var httpRequestMessage = new HttpRequestMessage(new HttpMethod("POST"), path) { Content = progressContent }; return(await SendAsync <TResult>(priority, httpRequestMessage, headers, httpResponseResolver, cancellationToken)); }
public virtual async Task <IRestApiResult <TResult> > GetAsync <TResult>( Priority priority, string path, IList <KeyValuePair <string, string> > headers = null, IHttpResponseResolver httpResponseResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, path); return(await SendAsync <TResult>(priority, httpRequestMessage, headers, httpResponseResolver, cancellationToken) .ConfigureAwait(false)); }
public static Task <IRestApiResult <TResult> > GetAsync <TResult>(this IRestApiClient apiClient, Priority priority, string path, int retryCount, Func <int, TimeSpan> sleepDurationProvider, IList <KeyValuePair <string, string> > headers = null, IHttpResponseResolver httpResponseResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { return(PollyDecorator( () => apiClient.GetAsync <TResult>(priority, path, headers, httpResponseResolver, cancellationToken), retryCount, sleepDurationProvider)); }
public static Task <IRestApiResult <TResult> > PutAsync <TContent, TResult>(this IRestApiClient apiClient, Priority priority, string path, int retryCount, int sleepDuration, TContent content = default(TContent), IList <KeyValuePair <string, string> > headers = null, IHttpContentResolver httpContentResolver = null, IHttpResponseResolver httpResponseResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { return(PollyDecorator( () => apiClient.PutAsync <TContent, TResult>(priority, path, content, headers, httpContentResolver, httpResponseResolver, cancellationToken), retryCount, sleepDuration)); }
public virtual async Task <IRestApiResult <TResult> > PatchAsync <TContent, TResult>( Priority priority, string path, TContent content = default(TContent), IList <KeyValuePair <string, string> > headers = null, IHttpContentResolver httpContentResolver = null, IHttpResponseResolver httpResponseResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { var httpContent = ResolveHttpContent(content, httpContentResolver); var httpRequestMessage = new HttpRequestMessage(new HttpMethod("PATCH"), path) { Content = httpContent }; return(await SendAsync <TResult>(priority, httpRequestMessage, headers, httpResponseResolver, cancellationToken) .ConfigureAwait(false)); }
protected virtual async Task <IRestApiResult <TResult> > SendAsync <TResult>( Priority priority, HttpRequestMessage httpRequestMessage, IList <KeyValuePair <string, string> > headers, IHttpResponseResolver httpResponseResolver, CancellationToken cancellationToken) { var httpClient = GetRestApiClient(priority); SetHttpRequestHeaders(httpRequestMessage, headers); var response = await httpClient .SendAsync(httpRequestMessage, cancellationToken) .ConfigureAwait(false); if (httpResponseResolver == null) { httpResponseResolver = _restApiClientOptions.DefaultResponseResolver; } return(await response .BuildRestApiResult <TResult>(httpResponseResolver) .ConfigureAwait(false)); }
public RestApiClientBuilder SetHttpResponseResolver(IHttpResponseResolver responseResolver) { _responseResolver = responseResolver; return(this); }
public static async Task <IRestApiResult <TResult> > BuildRestApiResult <TResult>(this HttpResponseMessage response, IHttpResponseResolver resolver) { if (response.IsSuccessStatusCode) { var result = await resolver.ResolveHttpResponseAsync <TResult>(response); return(new RestApiResult <TResult>(response.StatusCode, result, response.ReasonPhrase)); } var errorMessage = string.Empty; if (response.Content != null) { errorMessage = await response.Content.ReadAsStringAsync(); } return(new RestApiResult <TResult>(response.StatusCode, default(TResult), response.ReasonPhrase, errorMessage)); }