namespace LaaProduction.Http { using LaaProduction.Http.Interfaces; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; public class HttpClient : IHttpClient { private static readonly System.Net.Http.HttpClient http = new System.Net.Http.HttpClient(); public HttpResponse DELETE(string requestUri, string bearer = null) => this.HttpRequestHandler(HttpMethod.Delete, requestUri, bearer: bearer); public HttpResponse DELETE(string requestUri) => this.HttpRequestHandler(HttpMethod.Delete, requestUri); public HttpResponse GET(string requestUri, string bearer = null) => this.HttpRequestHandler(HttpMethod.Get, requestUri, bearer: bearer); public HttpResponse GET(string requestUri) => this.HttpRequestHandler(HttpMethod.Get, requestUri); public HttpResponse POST(string requestUri, string bearer = null, object body = null) => this.HttpRequestHandler(HttpMethod.Post, requestUri, bearer: bearer, body: body); public HttpResponse POST(string requestUri) => this.HttpRequestHandler(HttpMethod.Post, requestUri); public HttpResponse POST(string requestUri, object body) => this.HttpRequestHandler(HttpMethod.Post, requestUri, body: body); public HttpResponse POST(string requestUri, string bearer) => this.HttpRequestHandler(HttpMethod.Post, requestUri, bearer: bearer); public HttpResponse PUT(string requestUri, string bearer = null, object body = null) => this.HttpRequestHandler(HttpMethod.Put, requestUri, bearer: bearer, body: body); public HttpResponse PUT(string requestUri) => this.HttpRequestHandler(HttpMethod.Post, requestUri); public HttpResponse PUT(string requestUri, object body) => this.HttpRequestHandler(HttpMethod.Put, requestUri, body: body); public HttpResponse PUT(string requestUri, string bearer) => this.HttpRequestHandler(HttpMethod.Put, requestUri, bearer: bearer); private HttpResponse HttpRequestHandler(HttpMethod method, string url, string bearer = null, object body = null) { var result = default(HttpResponse); try { using (var request = new HttpRequestMessage(method, new Uri(url))) { if (body != null) { request.Content = new StringContent(JsonConvert.SerializeObject(body)); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); } if (!string.IsNullOrWhiteSpace(bearer)) { http.DefaultRequestHeaders .Authorization = new AuthenticationHeaderValue("Bearer", bearer); } using (var response = http.SendAsync(request).Result) { using (var content = response.Content) { var text = content.ReadAsStringAsync().Result; if (response.IsSuccessStatusCode) { result = JsonConvert.DeserializeObject(text); } else { result = JsonConvert.DeserializeObject>(text); } } } } } catch (Exception e) { result = e; } return result; } } }