예제 #1
0
        public async Task <FluentHttpClientResponse <T> > SendAsync <T>(FluentHttpClientRequest request,
                                                                        CancellationToken cancellationToken = default(CancellationToken))
        {
            FluentHttpClientResponse response;

            if (_requestDelegate != null)
            {
                response = await _requestDelegate.Invoke(request, cancellationToken).ConfigureAwait(false);
            }
            else
            {
                response = await RawHttpClientSendAsync(request, cancellationToken).ConfigureAwait(false);
            }

            if (request.EnsureSuccessStatusCode)
            {
                response.EnsureSuccessStatusCode();
            }

            if (!response.IsSuccessStatusCode)
            {
                return(new FluentHttpClientResponse <T>(response));
            }


            return(new FluentHttpClientResponse <T>(response)
            {
                Content = await response.As <T>()
            });
        }
예제 #2
0
        private async Task <FluentHttpClientResponse> RawHttpClientSendAsync(FluentHttpClientRequest request,
                                                                             CancellationToken cancellationToken)
        {
            var response = await RawHttpClient
                           .SendAsync(request.Message, HttpCompletionOption.ResponseHeadersRead, cancellationToken)
                           .ConfigureAwait(false);

            return(new FluentHttpClientResponse(response));
        }
예제 #3
0
        public async Task <FluentHttpClientResponse> SendAsync(FluentHttpClientRequest request,
                                                               CancellationToken cancellationToken = default(CancellationToken))
        {
            if (_requestDelegate != null)
            {
                return(await _requestDelegate.Invoke(request, cancellationToken).ConfigureAwait(false));
            }

            return(await RawHttpClientSendAsync(request, cancellationToken).ConfigureAwait(false));
        }
예제 #4
0
 public abstract HttpResponseMessage OnRequest(FluentHttpClientRequest request);
예제 #5
0
 public override HttpResponseMessage OnRequest(FluentHttpClientRequest request)
 {
     return(Next.OnRequest(request));
 }
예제 #6
0
        public static async Task <T> Send <T>(this FluentHttpClientRequest request)
        {
            var response = await request.FluentHttpClient.SendAsync <T>(request);

            return(response.Content);
        }
 public override async Task <FluentHttpClientResponse> InvokeAsync(FluentHttpClientRequest request,
                                                                   CancellationToken cancellationToken = default(CancellationToken))
 {
     Debug.WriteLine("what the ...?!");
     return(await Next(request, cancellationToken));
 }
 public abstract Task <FluentHttpClientResponse> InvokeAsync(FluentHttpClientRequest request,
                                                             CancellationToken cancellationToken = default(CancellationToken));
예제 #9
0
 public static FluentHttpClientRequest.FluentHttpClientRequestBuilder CreateNewRequest(
     this FluentHttpClient fluentHttpClient)
 {
     return(FluentHttpClientRequest.CreateNewRequest(fluentHttpClient));
 }