private ISolidHttpClient GetInnerClient() { if (_client == null) { _client = Provider.GetService <ISolidHttpClientFactory>().CreateWithBaseAddress(BaseAddress); _client.OnRequestCreated(request => request.OnHttpResponse(_ => _client = null)); } return(_client); }
public SolidHttpRequestChannel(EndpointAddress address, Uri via, ISolidHttpClient client, MessageEncoder encoder, MessageVersion messageVersion, XmlWriterSettings settings) { RemoteAddress = address; Via = via; _client = client; _encoder = encoder; _messageVersion = messageVersion; _settings = settings; }
internal SolidHttpRequest( ISolidHttpClient client, IServiceProvider services, HttpMethod method, Uri url, SolidAsyncEventHandler <HttpRequestMessage> onRequest, SolidAsyncEventHandler <HttpResponseMessage> onResponse, CancellationToken cancellationToken) { _services = services; Client = client; BaseRequest = new HttpRequestMessage(method, url); CancellationToken = cancellationToken; _onRequest += onRequest.Handler ?? onRequest.Noop; _onResponse += onResponse.Handler ?? onResponse.Noop; }
/// <summary> /// Add a handler to be run when Solid.Http request object is created. /// </summary> /// <param name="client">The Solid.Http client</param> /// <param name="action">The handler to be run</param> /// <returns>ISolidHttpClient</returns> public static ISolidHttpClient OnRequestCreated(this ISolidHttpClient client, Action <ISolidHttpRequest> action) => client.OnRequestCreated((_, r) => action(r));
/// <summary> /// Registers an event handler that runs when a new <see cref="ISolidHttpRequest" /> is created. /// </summary> /// <param name="client">The <see cref="ISolidHttpClient" /> being extended.</param> /// <param name="handler">The event handler that runs when a new <see cref="ISolidHttpRequest" /> is created.</param> /// <returns>The <see cref="ISolidHttpClient" /> so the additional calls can be chained.</returns> public static ISolidHttpClient OnRequestCreated(this ISolidHttpClient client, Action <ISolidHttpRequest> handler) => client.OnRequestCreated(handler.Convert());
/// <summary> /// Performs a POST request /// </summary> /// <param name="client">The ISolidHttpClient</param> /// <param name="url">The url to be requested</param> /// <param name="cancellationToken">The cancellation token for the request</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest PostAsync(this ISolidHttpClient client, string url, CancellationToken cancellationToken) { return(client.PostAsync(new Uri(url, UriKind.RelativeOrAbsolute), cancellationToken)); }
/// <summary> /// Performs a POST request /// </summary> /// <param name="client">The ISolidHttpClient</param> /// <param name="url">The url to be requested</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest PostAsync(this ISolidHttpClient client, Uri url) { return(client.PostAsync(url, CancellationToken.None)); }
/// <summary> /// Performs a POST request /// </summary> /// <param name="client">The ISolidHttpClient</param> /// <param name="url">The url to be requested</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest PostAsync(this ISolidHttpClient client, string url) { return(client.PostAsync(new Uri(url, UriKind.RelativeOrAbsolute))); }
/// <summary> /// Performs a GET request /// </summary> /// <param name="client">The ISolidHttpClient</param> /// <param name="url">The url to be requested</param> /// <param name="cancellationToken">The cancellation token for the request</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest GetAsync(this ISolidHttpClient client, Uri url, CancellationToken cancellationToken) { return(client.PerformRequestAsync(HttpMethod.Get, url, cancellationToken)); }
/// <summary> /// Performs a PATCH request /// </summary> /// <param name="client">The ISolidHttpClient</param> /// <param name="url">The url to be requested</param> /// <param name="cancellationToken">The cancellation token for the request</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest PatchAsync(this ISolidHttpClient client, Uri url, CancellationToken cancellationToken) { var patch = new HttpMethod("PATCH"); return(client.PerformRequestAsync(patch, url, cancellationToken)); }
/// <summary> /// Performs a DELETE request /// </summary> /// <param name="client">The <see cref="ISolidHttpClient" /> being extended.</param> /// <param name="url">The <see cref="Uri" /> to be requested.</param> /// <param name="cancellationToken">(Optional) The <see cref="CancellationToken" /> for the http request.</param> /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns> public static ISolidHttpRequest DeleteAsync(this ISolidHttpClient client, Uri url, CancellationToken cancellationToken = default) { return(client.PerformRequestAsync(HttpMethod.Delete, url, cancellationToken)); }