private ISolidHttpClient GetInnerClient()
 {
     if (_client == null)
     {
         _client = Provider.GetService <ISolidHttpClientFactory>().CreateWithBaseAddress(BaseAddress);
         _client.OnRequestCreated(request => request.OnHttpResponse(_ => _client = null));
     }
     return(_client);
 }
Exemple #2
0
 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;
        }
Exemple #4
0
 /// <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));
Exemple #5
0
 /// <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());
Exemple #6
0
 /// <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));
 }
Exemple #7
0
 /// <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));
 }
Exemple #8
0
 /// <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)));
 }
Exemple #9
0
 /// <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));
 }
Exemple #10
0
        /// <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));
 }