using System.ComponentModel; using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; namespace System.Net.Http { public static class HttpClientExtensions { public static Task PatchAsJsonAsync(this HttpClient client, string requestUri, T value) { //Ensure.Argument.NotNull(client, "client"); //Ensure.Argument.NotNullOrEmpty(requestUri, "requestUri"); //Ensure.Argument.NotNull(value, "value"); var content = new ObjectContent(value, new JsonMediaTypeFormatter()); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var request = new HttpRequestMessage(new HttpMethod("PATCH"), requestUri) { Content = content }; return client.SendAsync(request); } public async static Task PatchAsync(this HttpClient client, string requestUri, HttpContent content) { var method = new HttpMethod("PATCH"); var request = new HttpRequestMessage(method, requestUri) { Content = content }; return await client.SendAsync(request); } public async static Task PatchAsync(this HttpClient client, Uri requestUri, HttpContent content) { var method = new HttpMethod("PATCH"); var request = new HttpRequestMessage(method, requestUri) { Content = content }; return await client.SendAsync(request); } public async static Task PatchAsync(this HttpClient client, string requestUri, HttpContent content, CancellationToken cancellationToken) { var method = new HttpMethod("PATCH"); var request = new HttpRequestMessage(method, requestUri) { Content = content }; return await client.SendAsync(request, cancellationToken); } public async static Task PatchAsync(this HttpClient client, Uri requestUri, HttpContent content, CancellationToken cancellationToken) { var method = new HttpMethod("PATCH"); var request = new HttpRequestMessage(method, requestUri) { Content = content }; return await client.SendAsync(request, cancellationToken); } } }