Ejemplo n.º 1
0
 public ConstructionPlanService(IConstructionPlanRepo <ConstructionPlan> repo, IAuthHelper authhelper, IServiceDiscoveryProvider consulclient)
 {
     _repo         = repo;
     _authhelper   = authhelper;
     _userID       = _authhelper.GetUserId();
     _consulclient = consulclient;
 }
        private static SwaggerServiceDiscoveryProvider CreateProvider(Service service = null)
        {
            IServiceDiscoveryProviderFactory     serviceDiscovery     = Substitute.For <IServiceDiscoveryProviderFactory>();
            IServiceProviderConfigurationCreator configurationCreator = Substitute.For <IServiceProviderConfigurationCreator>();
            IOptionsMonitor <FileConfiguration>  options  = Substitute.For <IOptionsMonitor <FileConfiguration> >();
            IHttpContextAccessor      httpContextAccessor = Substitute.For <IHttpContextAccessor>();
            IOptions <SwaggerOptions> swaggerOptions      = Substitute.For <IOptions <SwaggerOptions> >();

            options.CurrentValue.Returns(new FileConfiguration());

            IServiceDiscoveryProvider serviceProvider = Substitute.For <IServiceDiscoveryProvider>();

            serviceProvider.Get().Returns(new List <Service>()
            {
                service
            });
            var response = new OkResponse <IServiceDiscoveryProvider>(serviceProvider);

            serviceDiscovery.Get(Arg.Any <ServiceProviderConfiguration>(), Arg.Any <DownstreamRoute>()).Returns(response);

            var provider = new SwaggerServiceDiscoveryProvider(
                serviceDiscovery, configurationCreator, options, httpContextAccessor, swaggerOptions);

            return(provider);
        }
Ejemplo n.º 3
0
        public static IServiceDiscoveryBuilder CreateServiceBuilder(this IServiceDiscoveryProvider serviceProvider, Action <IServiceDiscoveryBuilder> config)
        {
            var builder = new ServiceDiscoveryBuilder(serviceProvider);

            config(builder);
            return(builder);
        }
Ejemplo n.º 4
0
 public WeightRoundRobinLoadBalancer(string service, WeightRoundRobinLoadBalancerConfiguration configuration, IServiceDiscoveryProvider discoveryProvider)
 {
     Service           = service;
     Configugration    = configuration;
     DiscoveryProvider = discoveryProvider;
     _services         = new List <WeightMicroService>();
 }
Ejemplo n.º 5
0
 public Response<ILoadBalancer> Create(DownstreamReRoute reRoute, IServiceDiscoveryProvider serviceProvider)
 {
     var loadBalancer = new RoundRobin(async () => await serviceProvider.Get());
     var bus = new InMemoryBus<StickySession>();
     return new OkResponse<ILoadBalancer>(new CookieStickySessions(loadBalancer, reRoute.LoadBalancerOptions.Key,
         reRoute.LoadBalancerOptions.ExpiryInMs, bus));
 }
Ejemplo n.º 6
0
        public ConsulBridgeRouter(IServiceDiscoveryProvider discovery, ITransportFactory <TMessage> transportFactory, IOptions <ServiceDiscoveryOption> options)
        {
            _discovery = discovery;
            _options   = options.Value ?? ServiceDiscoveryOption.Default;

            _transportFactory = transportFactory;
            Initialize();
        }
        public async Task <IActionResult> GetServiceDescriptor([FromServices] IServiceDiscoveryProvider serviceDiscoveryProvider, string address, string queryParam)
        {
            var list = await serviceDiscoveryProvider.GetServiceDescriptorAsync(address, queryParam);

            var result = ServiceResult <IEnumerable <ServiceDescriptor> > .Create(true, list);

            return(Json(result));
        }
        public async Task <IActionResult> GetAddress([FromServices] IServiceDiscoveryProvider serviceDiscoveryProvider, string queryParam)
        {
            var list = await serviceDiscoveryProvider.GetAddressAsync(queryParam);

            var result = ServiceResult <IEnumerable <ServiceAddressModel> > .Create(true, list);

            return(Json(result));
        }
Ejemplo n.º 9
0
        public UserController(IUserService UserService, IServiceDiscoveryProvider serviceProvider)

        {
            //_logger = logger;
            //_mediator = mediator;
            //_cache = cache;
            _service         = UserService;
            _serviceProvider = serviceProvider;
        }
 public LoadBalanceMiddleware(RequestDelegate nextStep,
                              IServiceDiscoveryProvider serviceDiscoveryProvider,
                              IServiceLoadBalancer serviceLoadBalancer,
                              IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
 {
     _nextStep                 = nextStep;
     _serviceLoadBalancer      = serviceLoadBalancer;
     _serviceDiscoveryProvider = serviceDiscoveryProvider;
 }
        public DiscoveryServiceRouter(IServiceDiscoveryProvider discoveryProvider, IServiceProvider provider)
        {
            this._discoveryProvider = discoveryProvider;

            var clientOptions = provider.GetService <IOptions <RpcClientOptions> >();

            this._appName = clientOptions?.Value != null ?
                            clientOptions.Value.AppName : new RpcClientOptions().AppName;
        }
Ejemplo n.º 12
0
        private static bool MatchProviderName(ServiceProviderConfiguration config, IServiceDiscoveryProvider provider)
        {
            var configTypeName   = config.Type.ToLowerInvariant();
            var providerTypeName = provider.GetType().Name.ToLowerInvariant();

            return(providerTypeName == configTypeName ||
                   providerTypeName == string.Concat(configTypeName, "provider") ||
                   providerTypeName == string.Concat(configTypeName, "discoveryprovider") ||
                   providerTypeName == string.Concat(configTypeName, "servicediscoveryprovider"));
        }
Ejemplo n.º 13
0
        private async Task <string> GetUserAuthorizationJwtAsync(
            HttpContext httpContext,
            IHttpClientFactory httpClientFactory,
            IMemoryCache memoryCache,
            IServiceDiscoveryProvider serviceDiscoveryProvider)
        {
            if (JwtAuthorizationHelper.TryGetTokenValue(httpContext.Request.Headers, out string value))
            {
                int key = CacheHttpHeadersHelper.TryGetValue(
                    httpContext.Request.Headers,
                    _jwtAuthorizationOptions.CacheKeyHttpHeaders,
                    out string cacheKeyPart)
                    ? GetKey(httpContext, value, cacheKeyPart)
                    : GetKey(httpContext, value);

                if (!memoryCache.TryGetValue(key, out string jwtToken))
                {
                    string authUrl =
                        _jwtAuthorizationOptions.GetAuthorizationUrl(serviceDiscoveryProvider) + httpContext.Request.Path.Value;
                    jwtToken = await GetUserAuthorizationJwtAsync(
                        httpContext,
                        httpClientFactory,
                        memoryCache,
                        value,
                        key,
                        authUrl);
                }

                return(jwtToken);
            }
            else if (!string.IsNullOrEmpty(_jwtAuthorizationOptions.HashParameterName) &&
                     httpContext.Request.Query.TryGetValue(_jwtAuthorizationOptions.HashParameterName, out StringValues hashValue))
            {
                int key = GetKey(httpContext, hashValue.ToString());
                if (!memoryCache.TryGetValue(key, out string jwtToken))
                {
                    var uriBuilder = new UriBuilder(_jwtAuthorizationOptions.GetHashAuthorization(serviceDiscoveryProvider));
                    uriBuilder.Query = QueryString.Create(
                        _jwtAuthorizationOptions.HashParameterName,
                        hashValue.ToString()).ToUriComponent();
                    jwtToken = await GetUserAuthorizationJwtAsync(
                        httpContext,
                        httpClientFactory,
                        memoryCache,
                        StringValues.Empty,
                        key,
                        uriBuilder.Uri.ToString());
                }

                return(jwtToken);
            }

            return(string.Empty);
        }
Ejemplo n.º 14
0
 public Response <ILoadBalancer> Create(DownstreamReRoute reRoute, IServiceDiscoveryProvider serviceProvider)
 {
     try
     {
         return(new OkResponse <ILoadBalancer>(_creatorFunc(reRoute, serviceProvider)));
     }
     catch (Exception e)
     {
         return(new ErrorResponse <ILoadBalancer>(new ErrorInvokingLoadBalancerCreator(e)));
     }
 }
 public ConsulServiceRegisterHostedService(
     IApplicationLifetime lifetime,
     IServiceProvider serviceProvider,
     IServiceDiscoveryProvider serviceDiscoveryProvider,
     ConsulConfig serviceConfig)
 {
     _lifetime                 = lifetime;
     _serviceProvider          = serviceProvider;
     _cancellationTokenSource  = new CancellationTokenSource();
     _serviceConfig            = serviceConfig;
     _serviceDiscoveryProvider = serviceDiscoveryProvider;
 }
        public void RegisterServiceDiscoveryProvider()
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddSingleton <IConfiguration>(new ConfigurationBuilder().Build());

            serviceCollection.AddServiceDiscovery();

            IServiceDiscoveryProvider provider = serviceCollection
                                                 .BuildServiceProvider()
                                                 .GetService <IServiceDiscoveryProvider>();

            provider.Should().NotBeNull();
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 获取所用服务的描述
        /// 调试 http://127.0.0.1:729/api/Home/GetServiceDescriptor?address=127.0.0.1:98
        /// </summary>
        /// <param name="serviceDiscoveryProvider"></param>
        /// <param name="address"></param>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        public async Task <IActionResult> GetAddress([FromServices] IServiceDiscoveryProvider serviceDiscoveryProvider, string address, string queryParam)
        {
            var adlist = await serviceDiscoveryProvider.GetAddressAsync();

            IList <object> list = new List <object>();

            foreach (ServiceAddressModel item in adlist)
            {
                var    ip    = item.Address as IpAddressModel;
                string str   = ip.Ip + ":" + ip.Port;
                var    lista = await serviceDiscoveryProvider.GetServiceDescriptorAsync(str);

                list.Add(lista);
            }
            return(Json(new { A = adlist, B = list }));
        }
Ejemplo n.º 18
0
        public ConsulServiceRegisterHostedService(
            IApplicationLifetime lifetime,
            IServiceProvider serviceProvider,
            IServiceDiscoveryProvider serviceDiscoveryProvider,
            ConsulConfig serviceConfig)
        {
            _lifetime                 = lifetime;
            _serviceProvider          = serviceProvider;
            _cancellationTokenSource  = new CancellationTokenSource();
            _serviceConfig            = serviceConfig;
            _serviceDiscoveryProvider = serviceDiscoveryProvider;
            var interval = int.Parse(_serviceConfig.SERVICE_CHECK_INTERVAL.TrimEnd('s'));


            _timer = new System.Timers.Timer((double)(interval * 1000));
        }
        public void CreateProvider()
        {
            var services = new ServiceCollection();
            var builder  = new OcelotBuilder(services, new ConfigurationBuilder().Build());

            builder.Services.AddSingleton(new ConfigurationBuilder().Build());
            builder.Services.AddMemoryCache();

            var factory = AppConfigurationProviderFactory.Get;

            IServiceDiscoveryProvider provider = factory(
                services.BuildServiceProvider(),
                new ServiceProviderConfiguration("", "", "", 1, "", "", 1),
                new DownstreamRouteBuilder().WithServiceName("Users").Build());

            provider.Should().NotBeNull();
        }
        public PollConsul(int pollingInterval, IOcelotLoggerFactory factory, IServiceDiscoveryProvider consulServiceDiscoveryProvider)
        {
            _logger = factory.CreateLogger <PollConsul>();
            _consulServiceDiscoveryProvider = consulServiceDiscoveryProvider;
            _services = new List <Service>();

            _timer = new Timer(async x =>
            {
                if (_polling)
                {
                    return;
                }

                _polling = true;
                await Poll();
                _polling = false;
            }, null, pollingInterval, pollingInterval);
        }
        /// <summary>
        /// HttpContext pipeline processing.
        /// </summary>
        /// <param name="httpContext">Http context.</param>
        /// <param name="httpClientFactory">Http client factory.</param>
        /// <param name="memoryCache">Cache for caching authorization token.</param>
        /// <param name="serviceDiscoveryProvider">The service discovery provider.</param>
        public async Task Invoke(
            HttpContext httpContext,
            IHttpClientFactory httpClientFactory,
            IMemoryCache memoryCache,
            IServiceDiscoveryProvider serviceDiscoveryProvider)
        {
            string userJwt = await GetUserAuthorizationJwtAsync(
                httpContext,
                httpClientFactory,
                memoryCache,
                serviceDiscoveryProvider);

            if (!string.IsNullOrEmpty(userJwt))
            {
                AddUserProfileClaimsToIdentityAndHttpHeaders(httpContext, userJwt);
            }

            await _next(httpContext);
        }
Ejemplo n.º 22
0
 private void WhenIGetTheServiceProvider()
 {
     _result = _factory.Get(_serviceConfig);
 }
        public async Task <IActionResult> EditServiceToken([FromServices] IServiceDiscoveryProvider serviceDiscoveryProvider, IpAddressModel model)
        {
            await serviceDiscoveryProvider.EditServiceToken(model);

            return(Json(ServiceResult.Create(true)));
        }
        public async Task <IActionResult> EditServiceToken([FromServices] IServiceDiscoveryProvider serviceDiscoveryProvider, string address)
        {
            var list = await serviceDiscoveryProvider.GetAddressAsync(address);;

            return(View(list.FirstOrDefault()));
        }
Ejemplo n.º 25
0
 public PollKube(IServiceDiscoveryProvider serviceDiscoveryProvider)
 {
     this.serviceDiscoveryProvider = serviceDiscoveryProvider;
 }
Ejemplo n.º 26
0
 public Response <ILoadBalancer> Create(DownstreamRoute route, IServiceDiscoveryProvider serviceProvider)
 {
     return(new OkResponse <ILoadBalancer>(new RoundRobin(async() => await serviceProvider.Get())));
 }
Ejemplo n.º 27
0
 private string GetUrl(IServiceDiscoveryProvider provider, AuthorizationServiceOptions authorization)
 => provider.GetPath(authorization.ServiceName, authorization.PathName).ToString();
Ejemplo n.º 28
0
 internal string GetHashAuthorization(IServiceDiscoveryProvider provider)
 => HashAuthorizationUrl ?? GetUrl(provider, HashAuthorization);
Ejemplo n.º 29
0
 internal string GetAuthorizationUrl(IServiceDiscoveryProvider provider)
 => AuthorizationUrl ?? GetUrl(provider, Authorization);
 public FakeLoadBalancer(DownstreamReRoute reRoute, IServiceDiscoveryProvider serviceDiscoveryProvider)
 {
     ReRoute = reRoute;
     ServiceDiscoveryProvider = serviceDiscoveryProvider;
 }