private static HttpMessageHandler CreatePipeline(HttpMessageHandler innerHandler, IEnumerable <HttpMessageHandler> handlers)
        {
            var httpMessageHandler = innerHandler;

            foreach (var handler in handlers.Reverse())
            {
                if (handler == null)
                {
                    throw new ArgumentNullException(nameof(handlers), "Delegating Handler Array Contains Null Item");
                }

                var delegatingHandler = handler as DelegatingHandler;

                if (delegatingHandler == null)
                {
                    delegatingHandler = new HttpMessageHandlerToDelegatingHandler(handler);
                }
                else
                {
                    if (delegatingHandler.InnerHandler != null)
                    {
                        throw new ArgumentException("Delegating Handler Array Has Non Null Inner Handler", nameof(handlers));
                    }

                    delegatingHandler.InnerHandler = httpMessageHandler;
                }

                httpMessageHandler = delegatingHandler;
            }

            return(httpMessageHandler);
        }
Esempio n. 2
0
        internal HttpMessageHandler CreatePipeline()
        {
            var allHandlers = Pipeline.Except(Pipeline.OfType <HttpClientHandler>());
            HttpMessageHandler primaryHandler = Pipeline.OfType <HttpClientHandler>().SingleOrDefault() ?? new HttpClientHandler();

            foreach (var handler in allHandlers.Reverse())
            {
                if (handler == null)
                {
                    throw new ArgumentNullException(nameof(Pipeline), "Delegating Handlers Contains null Item");
                }

                if (!(handler is DelegatingHandler delegatingHandler))
                {
                    delegatingHandler = new HttpMessageHandlerToDelegatingHandler(handler);
                }