예제 #1
0
            public FluentHttpClient Build()
            {
                if (_baseUrl == null)
                {
                    _baseUrl = new Uri("");
                }



                var fluentHttpClient = new FluentHttpClient(this)
                {
                    RawHttpClient = BuildHttpClient(this)
                };



                if (_middlewares == null || !_middlewares.Any())
                {
                    return(fluentHttpClient);
                }

                FluentHttpClientRequestDelegate invokeDelegate = fluentHttpClient.RawHttpClientSendAsync;

                _requestDelegate = CreateMiddlewares(invokeDelegate);
                ;


                return(fluentHttpClient);
            }
예제 #2
0
            private FluentHttpClientRequestDelegate CreateMiddlewares(FluentHttpClientRequestDelegate invokeDelegate)
            {
                foreach (var middlewareConfig in _middlewares)
                {
                    object[] constructorArgs;
                    if (middlewareConfig.Args == null)
                    {
                        constructorArgs = new object[] { invokeDelegate };
                    }
                    else
                    {
                        constructorArgs    = new object[middlewareConfig.Args.Length + 1];
                        constructorArgs[0] = invokeDelegate;
                        Array.Copy(middlewareConfig.Args, 0, constructorArgs, 1, middlewareConfig.Args.Length);
                    }

                    var middleware = (IFluentHttpClientMiddleware)Activator.CreateInstance(middlewareConfig.Middleware,
                                                                                           constructorArgs);
                    invokeDelegate = middleware.InvokeAsync;
                }

                return(invokeDelegate);
            }
 public Nlog2FluentHttpClientMiddleware(FluentHttpClientRequestDelegate next) : base(next)
 {
 }
예제 #4
0
 private FluentHttpClient(IFluentHttpClientBuilder httpClientBuilder)
 {
     _requestDelegate = httpClientBuilder.RequestDelegate;
 }
 protected FluentHttpClientMiddleware(FluentHttpClientRequestDelegate next)
 {
     Next = next;
 }