コード例 #1
0
        /// <inheritdoc />
        public async Task <FluentHttpResponse <T> > SendAsync <T>(FluentHttpRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var response = await _middlewareRunner.Run(request, async() =>
            {
                var result = await RawHttpClient.SendAsync(request.Message, request.CancellationToken)
                             .ConfigureAwait(false);
                return(ToFluentResponse(result, request.Items));
            }).ConfigureAwait(false);

            if (HasSuccessStatusOrThrow && !request.HasSuccessStatusOrThrow.HasValue)
            {
                response.EnsureSuccessStatusCode();
            }

            if (request.HasSuccessStatusOrThrow.HasValue && request.HasSuccessStatusOrThrow.Value)
            {
                response.EnsureSuccessStatusCode();
            }


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

            return(new FluentHttpResponse <T>(response)
            {
                Data = await response.As <T>()
            });
        }
コード例 #2
0
        public async Task <FluentHttpResponse> Send(HttpRequestMessage request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var response = await RawHttpClient.SendAsync(request);

            return(response.ToFluentHttpResponse());
        }
コード例 #3
0
        public async Task <FluentHttpResponse> Send(HttpRequestMessage request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestId = request.AddRequestId();
            await RawHttpClient.SendAsync(request);

            var executionContext = _requestTracker.Pop(requestId);

            return(executionContext.Response);
        }
コード例 #4
0
        public static void Run()
        {
            var configuration = new HttpCallConfiguration{
                ServiceUri = serviceUri, 
                Method = HttpMethod.POST,
                Iterations = iterations, 
                IntervalMilliseconds = intervalMilliseconds, 
                PostData = soapEnvelope};

            configuration.Headers.Add("SOAPAction", action);
            var client = new RawHttpClient(configuration, Console.Out);

            client.MakeRawHttpCall();
        }
コード例 #5
0
        public static void Run()
        {
            var configuration = new HttpCallConfiguration {
                ServiceUri           = serviceUri,
                Method               = HttpMethod.POST,
                Iterations           = iterations,
                IntervalMilliseconds = intervalMilliseconds,
                PostData             = soapEnvelope
            };

            configuration.Headers.Add("SOAPAction", action);
            var client = new RawHttpClient(configuration, Console.Out);

            client.MakeRawHttpCall();
        }
コード例 #6
0
        public async Task <FluentHttpResponse> Send(HttpRequestMessage request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestId = request.AddRequestId();
            await RawHttpClient.SendAsync(request);

            request.Dispose();             // todo: since consumer is passing request message leave it up to him or not? or make global config ShouldDisposeMessageOnSend or so
            var executionContext = _requestTracker.Pop(requestId);

            return(executionContext.Response);
        }
コード例 #7
0
        /// <summary>
        /// Make sure the TestHttpHandler is running before trying this test.
        /// </summary>
        public static void Call_TestHttpHandler()
        {
            var configuration = new HttpCallConfiguration
            {
                ServiceUri = serviceUri,
                Method = HttpMethod.GET,
                Iterations = iterations,
                IntervalMilliseconds = intervalMilliseconds,
                PrintResponse = false,
                Expect100Continue = false,
                UseNagleAlgorithm = false,
                KeepAlive = true
            };

            var client = new RawHttpClient(configuration, Console.Out);

            client.MakeRawHttpCall();
        }
コード例 #8
0
        /// <summary>
        /// Make sure the TestTimerService is running before trying this test.
        /// </summary>
        public static void Call_TestTimerService()
        {
            var configuration = new HttpCallConfiguration
            {
                ServiceUri = serviceUri,
                Method = HttpMethod.POST,
                Iterations = iterations,
                IntervalMilliseconds = intervalMilliseconds,
                PostData = soapEnvelope,
                PrintResponse = false,
                Expect100Continue = false,
                UseNagleAlgorithm = false,
                KeepAlive = true
            };

            configuration.Headers.Add("SOAPAction", action);
            var client = new RawHttpClient(configuration, Console.Out);

            client.MakeRawHttpCall();
        }
コード例 #9
0
        /// <inheritdoc />
        public async Task <FluentHttpResponse> Send(FluentHttpRequest fluentRequest)
        {
            if (fluentRequest == null)
            {
                throw new ArgumentNullException(nameof(fluentRequest));
            }
            var response = await _middlewareRunner.Run(_middleware, fluentRequest, async request =>
            {
                var result = await RawHttpClient.SendAsync(request.Message, request.CancellationToken)
                             .ConfigureAwait(false);
                return(ToFluentResponse(result, request.Items));
            }).ConfigureAwait(false);

            if (fluentRequest.HasSuccessStatusOrThrow)
            {
                response.EnsureSuccessStatusCode();
            }

            return(response);
        }
コード例 #10
0
        /// <inheritdoc />
        public async Task <FluentHttpResponse> Send(FluentHttpRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestId = request.Message.AddRequestId();

            _requestTracker.Push(requestId, request);
            await RawHttpClient.SendAsync(request.Message);

            var executionContext = _requestTracker.Pop(requestId);

            if (request.HasSuccessStatusOrThrow)
            {
                executionContext.Response.EnsureSuccessStatusCode();
            }

            return(executionContext.Response);
        }
コード例 #11
0
 /// <inheritdoc />
 public void Dispose()
 {
     RawHttpClient?.Dispose();
 }