Ejemplo n.º 1
0
        public static T For <T>(string hostUrl, RefitSettings settings)
        {
            // check to see if user provided custom auth token
            HttpMessageHandler innerHandler = null;

            if (settings != null)
            {
                if (settings.HttpMessageHandlerFactory != null)
                {
                    innerHandler = settings.HttpMessageHandlerFactory();
                }

                if (settings.AuthorizationHeaderValueGetter != null)
                {
                    innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler);
                }
            }

            var client = new HttpClient(innerHandler ?? new HttpClientHandler())
            {
                BaseAddress = new Uri(hostUrl)
            };

            return(For <T>(client, settings));
        }
Ejemplo n.º 2
0
        public static HttpClient CreateHttpClient(string hostUrl, RefitSettings settings)
        {
            if (string.IsNullOrWhiteSpace(hostUrl))
            {
                throw new ArgumentException(
                          $"`{nameof(hostUrl)}` must not be null or whitespace.",
                          nameof(hostUrl));
            }

            // check to see if user provided custom auth token
            HttpMessageHandler innerHandler = null;

            if (settings != null)
            {
                if (settings.HttpMessageHandlerFactory != null)
                {
                    innerHandler = settings.HttpMessageHandlerFactory();
                }

                if (settings.AuthorizationHeaderValueGetter != null)
                {
                    innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler);
                }
                else if (settings.AuthorizationHeaderValueWithParamGetter != null)
                {
                    innerHandler = new AuthenticatedParameterizedHttpClientHandler(settings.AuthorizationHeaderValueWithParamGetter, innerHandler);
                }
            }

            return(new HttpClient(innerHandler ?? new HttpClientHandler())
            {
                BaseAddress = new Uri(hostUrl.TrimEnd('/'))
            });
        }
        /// <summary>
        /// Adds a Refit client to the DI container
        /// </summary>
        /// <typeparam name="T">Type of the Refit interface</typeparam>
        /// <param name="services">container</param>
        /// <param name="settings">Optional. Settings to configure the instance with</param>
        /// <returns></returns>
        public static IHttpClientBuilder AddRefitClient <T>(this IServiceCollection services, RefitSettings settings = null) where T : class
        {
            services.AddSingleton(provider => RequestBuilder.ForType <T>(settings));

            return(services.AddHttpClient(UniqueName.ForType <T>())
                   .ConfigureHttpMessageHandlerBuilder(builder =>
            {
                // check to see if user provided custom auth token
                HttpMessageHandler innerHandler = null;
                if (settings != null)
                {
                    if (settings.HttpMessageHandlerFactory != null)
                    {
                        innerHandler = settings.HttpMessageHandlerFactory();
                    }

                    if (settings.AuthorizationHeaderValueGetter != null)
                    {
                        innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler);
                    }
                    else if (settings.AuthorizationHeaderValueWithParamGetter != null)
                    {
                        innerHandler = new AuthenticatedParameterizedHttpClientHandler(settings.AuthorizationHeaderValueWithParamGetter, innerHandler);
                    }
                }

                if (innerHandler != null)
                {
                    builder.PrimaryHandler = innerHandler;
                }
            })
                   .AddTypedClient((client, serviceProvider) => RestService.For <T>(client, serviceProvider.GetService <IRequestBuilder <T> >())));
        }
        /// <summary>
        /// Adds a Refit client to the DI container
        /// </summary>
        /// <param name="services">container</param>
        /// <param name="refitInterfaceType">Type of the Refit interface</param>
        /// <param name="settings">Optional. Settings to configure the instance with</param>
        /// <returns></returns>
        public static IHttpClientBuilder AddRefitClient(this IServiceCollection services, Type refitInterfaceType, RefitSettings settings = null)
        {
            return(services.AddHttpClient(UniqueName.ForType(refitInterfaceType))
                   .ConfigureHttpMessageHandlerBuilder(builder =>
            {
                // check to see if user provided custom auth token
                HttpMessageHandler innerHandler = null;
                if (settings != null)
                {
                    if (settings.HttpMessageHandlerFactory != null)
                    {
                        innerHandler = settings.HttpMessageHandlerFactory();
                    }

                    if (settings.AuthorizationHeaderValueGetter != null)
                    {
                        innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler);
                    }
                    else if (settings.AuthorizationHeaderValueWithParamGetter != null)
                    {
                        innerHandler = new AuthenticatedParameterizedHttpClientHandler(settings.AuthorizationHeaderValueWithParamGetter, innerHandler);
                    }
                }

                if (innerHandler != null)
                {
                    builder.PrimaryHandler = innerHandler;
                }
            })
                   .AddTypedClient(refitInterfaceType, (client, serviceProvider) => RestService.For(refitInterfaceType, client, settings)));
        }
Ejemplo n.º 5
0
        public static T For <T>(string hostUrl, RefitSettings settings)
        {
#if PORTABLE
            throw new NotImplementedException("You've somehow included the PCL version of Refit in your app. You need to use the platform-specific version!");
#else
            // check to see if user provided custom auth t

            HttpMessageHandler innerHandler = null;
            if (settings != null)
            {
                if (settings.HttpMessageHandlerFactory != null)
                {
                    innerHandler = settings.HttpMessageHandlerFactory();
                }

                if (settings.AuthorizationHeaderValueGetter != null)
                {
                    innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler);
                }
            }

            var client = new HttpClient(innerHandler ?? new HttpClientHandler())
            {
                BaseAddress = new Uri(hostUrl)
            };
            return(RestService.For <T>(client, settings));
#endif
        }