protected virtual HttpContent ResolveHttpContent <TContent>( TContent content, IHttpContentResolver httpContentResolver = null) { HttpContent httpContent = null; if (!EqualityComparer <TContent> .Default.Equals(content, default(TContent))) { if (content is HttpContent) { httpContent = content as HttpContent; } else { if (httpContentResolver != null) { httpContent = httpContentResolver.ResolveHttpContent(content); } else { var contentAsDictionary = content as Dictionary <string, string>; httpContent = contentAsDictionary != null ? new DictionaryContentResolver().ResolveHttpContent(content as Dictionary <string, string>) : _restApiClientOptions.DefaultContentResolver.ResolveHttpContent(content); } } } return(httpContent); }
internal HttpContent ResolveHttpContent <TContent>(TContent content, IHttpContentResolver contentResolver = null) { HttpContent httpContent = null; if (content != null) { if (content is HttpContent) { httpContent = content as HttpContent; } else { if (contentResolver != null) { httpContent = contentResolver.ResolveHttpContent(content); } else { var contentAsDictionary = content as Dictionary <string, string>; httpContent = contentAsDictionary != null ? new DictionaryContentResolver().ResolveHttpContent(content as Dictionary <string, string>) : HttpContentResolver.ResolveHttpContent(content); } } } return(httpContent); }
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 static Task <IRestApiResult <TResult> > PutAsync <TContent, TResult>(this IRestApiClient apiClient, Priority priority, string path, int retryCount, int sleepDuration, TContent content = default(TContent), IHttpContentResolver contentResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { return(PollyDecorator( () => apiClient.PutAsync <TContent, TResult>(priority, path, cancellationToken: cancellationToken), retryCount, sleepDuration)); }
public static Task <IRestApiResult <TResult> > PutAsync <TContent, TResult>(this IRestApiClient apiClient, Priority priority, string path, int retryCount, Func <int, TimeSpan> sleepDurationProvider, 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, sleepDurationProvider)); }
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)); }
public RestApiClientBuilder SetHttpContentResolver(IHttpContentResolver contentResolver) { _contentResolver = contentResolver; return(this); }
public static async Task <TResult> PostAsync <TContent, TResult>(this WebApiClient webApiClient, Priority priority, string path, TContent content = default(TContent), ProgressDelegate progressDelegate = null, IHttpContentResolver contentResolver = null) { var httpClient = webApiClient.GetWebApiClient(priority); webApiClient.SetHttpRequestHeaders(httpClient); var httpContent = webApiClient.ResolveHttpContent(content); var stream = await httpContent.ReadAsStreamAsync(); var progressContent = new ProgressStreamContent(httpContent.Headers, stream, CancellationToken.None); progressContent.Progress = progressDelegate; var response = await httpClient .PostAsync(path, progressContent) .ConfigureAwait(false); if (!await response.EnsureSuccessStatusCodeAsync()) { return(default(TResult)); } return(await webApiClient.HttpResponseResolver.ResolveHttpResponseAsync <TResult>(response)); }
public static Task <TResult> PutAsync <TContent, TResult>(this IWebApiClient webApiClient, Priority priority, string path, int retryCount, Func <int, TimeSpan> sleepDurationProvider, TContent content = default(TContent), IHttpContentResolver contentResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { return(PollyDecorator( () => webApiClient.PutAsync <TContent, TResult>(priority, path, cancellationToken: cancellationToken), retryCount, sleepDurationProvider)); }
public async Task <TResult> PostAsync <TContent, TResult>(Priority priority, string path, TContent content = default(TContent), IHttpContentResolver contentResolver = null) { var httpClient = GetWebApiClient(priority); SetHttpRequestHeaders(httpClient); HttpContent httpContent = null; if (content != null) { if (content is HttpContent) { httpContent = content as HttpContent; } else { if (contentResolver != null) { httpContent = contentResolver.ResolveHttpContent(content); } else { if (content is Dictionary <string, string> ) { httpContent = new DictionaryContentResolver().ResolveHttpContent(content as Dictionary <string, string>); } else { httpContent = HttpContentResolver.ResolveHttpContent(content); } } } } var response = await httpClient .PostAsync(path, httpContent) .ConfigureAwait(false); if (!await response.EnsureSuccessStatusCodeAsync()) { return(default(TResult)); } return(await HttpResponseResolver.ResolveHttpResponseAsync <TResult>(response)); }
public virtual async Task <TResult> PutAsync <TContent, TResult>(Priority priority, string path, TContent content = default(TContent), IHttpContentResolver contentResolver = null, CancellationToken cancellationToken = default(CancellationToken)) { var httpClient = GetWebApiClient(priority); SetHttpRequestHeaders(httpClient); var httpContent = ResolveHttpContent(content, contentResolver); var response = await httpClient .PutAsync(path, httpContent, cancellationToken) .ConfigureAwait(false); if (!await response.EnsureSuccessStatusCodeAsync()) { return(default(TResult)); } return(await HttpResponseResolver.ResolveHttpResponseAsync <TResult>(response)); }
public static async Task <IRestApiResult <TResult> > PostAsync <TContent, TResult>(this RestApiClient apiClient, Priority priority, string path, TContent content = default(TContent), ProgressDelegate progressDelegate = null, IHttpContentResolver contentResolver = null) { var httpClient = apiClient.GetRestApiClient(priority); apiClient.SetHttpRequestHeaders(httpClient); var httpContent = apiClient.ResolveHttpContent(content); var stream = await httpContent.ReadAsStreamAsync(); var progressContent = new ProgressStreamContent(httpContent.Headers, stream, CancellationToken.None); progressContent.Progress = progressDelegate; var response = await httpClient .PostAsync(path, progressContent) .ConfigureAwait(false); return(await response.BuildRestApiResult <TResult>(apiClient.HttpResponseResolver)); }