public Maybe <string, HttpException> Put(string body, string url, string contentType, HttpOptions options, params Header[] headers)
 {
     return(HypertextTransferProtocol.Send(body, url, contentType, options, headers, "PUT").Match(x => new Maybe <string, HttpException>(x), ex => new Maybe <string, HttpException>(ex)));
 }
 public Task <Maybe <TResponse> > DeleteJsonAsync <TResponse>(string url, HttpOptions options, params Header[] headers)
 {
     return(HypertextTransferProtocol.SendAsync(string.Empty, url, string.Empty, options, Http.AddJsonAccept(headers), HttpMethod.Delete).ContinueWith(x => x.Result.Match(y => Json.Maybe.ToModel <TResponse>(y).Match(z => new Maybe <TResponse>(z), ex => new Maybe <TResponse>(ex)), ex => new Maybe <TResponse>(ex))));
 }
 public Maybe <TResponse> PostJson <TRequest, TResponse>(TRequest model, string url, HttpOptions options, params Header[] headers)
 {
     return(Json.Maybe.FromModel(model).Match(
                json => HypertextTransferProtocol
                .Send(json, url, "application/json", options, Http.AddJsonAccept(headers), "POST")
                .Match(x => Json.Maybe.ToModel <TResponse>(x).Match(y => new Maybe <TResponse>(y), ex => new Maybe <TResponse>(ex)), ex => new Maybe <TResponse>(ex)),
                ex => new Maybe <TResponse>(ex)
                ));
 }
 public Task <Maybe <TResponse> > PutJsonAsync <TRequest, TResponse>(TRequest model, string url, HttpOptions options, params Header[] headers)
 {
     return(Json.Maybe.FromModel(model).MatchAsync(
                json => HypertextTransferProtocol
                .SendAsync(json, url, "application/json", options, Http.AddJsonAccept(headers), HttpMethod.Put)
                .ContinueWith(x => x.Result.Match(y => Json.Maybe.ToModel <TResponse>(y)
                                                  .Match(z => new Maybe <TResponse>(z), ex => new Maybe <TResponse>(ex)), ex => new Maybe <TResponse>(ex))),
                ex => new Maybe <TResponse>(ex)
                ));
 }
 public Task <Maybe <string, HttpException> > DeleteAsync(string url, HttpOptions options, params Header[] headers)
 {
     return(HypertextTransferProtocol.SendAsync(string.Empty, url, string.Empty, options, headers, HttpMethod.Delete).ContinueWith(x => x.Result.Match(y => new Maybe <string, HttpException>(y), ex => new Maybe <string, HttpException>(ex))));
 }
 public Maybe <TResponse> DeleteJson <TResponse>(string url, HttpOptions options, params Header[] headers)
 {
     return(HypertextTransferProtocol
            .Send(string.Empty, url, string.Empty, options, Http.AddJsonAccept(headers), "DELETE")
            .Match(x => Json.Maybe.ToModel <TResponse>(x).Match(y => new Maybe <TResponse>(y), ex => new Maybe <TResponse>(ex)), ex => new Maybe <TResponse>(ex)));
 }
 public Task <Maybe <string, HttpException> > PutAsync(string body, string url, string contentType, HttpOptions options, params Header[] headers)
 {
     return(HypertextTransferProtocol.SendAsync(body, url, contentType, options, headers, HttpMethod.Put).ContinueWith(x => x.Result.Match(y => new Maybe <string, HttpException>(y), ex => new Maybe <string, HttpException>(ex))));
 }
 public Task <string> DeleteAsync(string url, HttpOptions options, params Header[] headers) => Http.DeleteAsync(url, options, headers);
 public Task <TResponse> DeleteJsonAsync <TResponse>(string url, HttpOptions options, params Header[] headers) => Http.DeleteJsonAsync <TResponse>(url, options, headers);
 public Task <string> PutAsync(string body, string url, string contentType, HttpOptions options, params Header[] headers) => Http.PutAsync(body, url, contentType, options, headers);
 public Task <TResponse> PutJsonAsync <TRequest, TResponse>(TRequest model, string url, HttpOptions options, params Header[] headers) => Http.PutJsonAsync <TRequest, TResponse>(model, url, options, headers);
 public string Delete(string url, HttpOptions options, params Header[] headers) => Http.Delete(url, options, headers);
 public TResponse GetJson <TResponse>(string url, HttpOptions options, params Header[] headers) => Http.GetJson <TResponse>(url, options, headers);
 public string Get(string url, HttpOptions options, params Header[] headers) => Http.Get(url, options, headers);
 public string Put(string body, string url, string contentType, HttpOptions options, params Header[] headers) => Http.Put(url, body, contentType, options, headers);
 public TResponse PostJson <TRequest, TResponse>(TRequest model, string url, HttpOptions options, params Header[] headers) => Http.PostJson <TRequest, TResponse>(model, url, options, headers);