示例#1
0
        public static IAutofacFeignBuilder AddFeignClients(this ContainerBuilder containerBuilder, Action <IFeignOptions> setupAction)
        {
            FeignOptions options = new FeignOptions();

            setupAction?.Invoke(options);
            return(AddFeignClients(containerBuilder, options));
        }
        public static IDependencyInjectionFeignBuilder AddFeignClients(this IServiceCollection services, Action <IFeignOptions> setupAction)
        {
            FeignOptions options = new FeignOptions();

            setupAction?.Invoke(options);
            return(AddFeignClients(services, options));
        }
示例#3
0
        public static ICastleWindsorFeignBuilder AddFeignClients(this IWindsorContainer windsorContainer, Action <IFeignOptions> setupAction)
        {
            FeignOptions options = new FeignOptions();

            setupAction?.Invoke(options);
            return(AddFeignClients(windsorContainer, options));
        }
示例#4
0
        public static IStandaloneFeignBuilder AddFeignClients(FeignOptions options)
        {
            if (options == null)
            {
                options = new FeignOptions();
            }

            if (options.Lifetime == FeignClientLifetime.Scoped)
            {
                throw new NotSupportedException(nameof(options.Lifetime) + " can not be FeignClientLifetime.Scoped!");
            }

            StandaloneFeignBuilder feignBuilder = _standaloneFeignBuilder;

            feignBuilder.Options = options;
            if (options.Assemblies.Count == 0)
            {
                feignBuilder.AddFeignClients(Assembly.GetEntryAssembly(), options.Lifetime);
            }
            else
            {
                foreach (var assembly in options.Assemblies)
                {
                    feignBuilder.AddFeignClients(assembly, options.Lifetime);
                }
            }
            feignBuilder.AddService(typeof(ILoggerFactory), typeof(DefaultLoggerFactory), FeignClientLifetime.Singleton);
            feignBuilder.AddService(typeof(ICacheProvider), typeof(DefaultCacheProvider), FeignClientLifetime.Singleton);
            feignBuilder.AddService <IFeignOptions>(options);
            return(feignBuilder);
        }
示例#5
0
        public static IStandaloneFeignBuilder AddFeignClients(Action <FeignOptions> setupAction)
        {
            FeignOptions options = new FeignOptions();

            setupAction?.Invoke(options);
            return(AddFeignClients(options));
        }
示例#6
0
        public static IFeignBuilder AddFeignClients(this IServiceCollection services, FeignOptions options)
        {
            if (options == null)
            {
                options = new FeignOptions();
            }

            FeignBuilder feignBuilder = new FeignBuilder();

            feignBuilder.Services = services;
            feignBuilder.Options  = options;

            if (options.Assemblies.Count == 0)
            {
                AddFeignClients(feignBuilder.FeignClientTypeBuilder, services, Assembly.GetEntryAssembly(), options.Lifetime);
            }
            else
            {
                foreach (var assembly in options.Assemblies)
                {
                    AddFeignClients(feignBuilder.FeignClientTypeBuilder, services, assembly, options.Lifetime);
                }
            }
            services.TryAddSingleton(options);
            feignBuilder.FeignClientTypeBuilder.FinishBuild();
            return(feignBuilder);
        }
        public static IAutofacFeignBuilder AddFeignClients(this ContainerBuilder containerBuilder, IFeignOptions options)
        {
            if (options == null)
            {
                options = new FeignOptions();
            }
            AutofacFeignBuilder feignBuilder = new AutofacFeignBuilder();

            feignBuilder.ContainerBuilder = containerBuilder;
            feignBuilder.AddFeignClients(options);
            return(feignBuilder);
        }
示例#8
0
        public static ICastleWindsorFeignBuilder AddFeignClients(this IWindsorContainer windsorContainer, IFeignOptions options)
        {
            if (options == null)
            {
                options = new FeignOptions();
            }

            CastleWindsorFeignBuilder feignBuilder = new CastleWindsorFeignBuilder();

            feignBuilder.WindsorContainer = windsorContainer;
            feignBuilder.Options          = options;
            feignBuilder.AddDefaultFeignClients();
            return(feignBuilder);
        }
示例#9
0
        public static IDependencyInjectionFeignBuilder AddFeignClients(this IServiceCollection services, IFeignOptions options)
        {
            if (options == null)
            {
                options = new FeignOptions();
            }

            DependencyInjectionFeignBuilder feignBuilder = new DependencyInjectionFeignBuilder();

            feignBuilder.Services = services;
            feignBuilder.Options  = options;
            feignBuilder.AddDefaultFeignClients()
            .AddLoggerFactory <LoggerFactory>()
            .AddCacheProvider <CacheProvider>()
            ;
            return(feignBuilder);
        }
        public FeignClientProxyService(FeignOptions feignOptions, IServiceDiscovery serviceDiscovery, IDistributedCache distributedCache, ILoggerFactory loggerFactory)
        {
            //_logger = loggerFactory?.CreateLogger(this.GetType());
            _feignOptions = feignOptions;
            _logger       = loggerFactory?.CreateLogger(typeof(FeignClientProxyService));
            _globalFeignClientPipeline = _feignOptions?.FeignClientPipeline as GlobalFeignClientPipelineBuilder;;
            ServiceDiscoveryHttpClientHandler serviceDiscoveryHttpClientHandler = new ServiceDiscoveryHttpClientHandler(serviceDiscovery, this, _globalFeignClientPipeline, distributedCache, _logger);

            serviceDiscoveryHttpClientHandler.ShouldResolveService = string.IsNullOrWhiteSpace(Url);
            serviceDiscoveryHttpClientHandler.AllowAutoRedirect    = false;
            _httpClient = new HttpClient(serviceDiscoveryHttpClientHandler);
            string baseUrl = serviceDiscoveryHttpClientHandler.ShouldResolveService ? ServiceId ?? "" : Url;

            if (!baseUrl.StartsWith("http"))
            {
                baseUrl = $"http://{baseUrl}";
            }
            if (!string.IsNullOrWhiteSpace(BaseUri))
            {
                if (baseUrl.EndsWith("/"))
                {
                    baseUrl = baseUrl.TrimEnd('/');
                }
                if (BaseUri.StartsWith("/"))
                {
                    baseUrl += BaseUri;
                }
                else
                {
                    baseUrl += "/" + BaseUri;
                }
            }

            if (baseUrl.EndsWith("/"))
            {
                baseUrl = baseUrl.TrimEnd('/');
            }
            _baseUrl = baseUrl;
        }
示例#11
0
 public TestFeignClientProxyService(FeignOptions feignOptions, IServiceDiscovery serviceDiscovery, IDistributedCache distributedCache, ILoggerFactory loggerFactory) : base(feignOptions, serviceDiscovery, distributedCache, loggerFactory)
 {
 }