private ReRoute SetUpDynamicReRoute(FileDynamicReRoute fileDynamicReRoute, FileGlobalConfiguration globalConfiguration)
        {
            var rateLimitOption = _rateLimitOptionsCreator.Create(fileDynamicReRoute.RateLimitRule, globalConfiguration);

            var downstreamReRoute = new DownstreamReRouteBuilder()
                                    .WithEnableRateLimiting(true)
                                    .WithRateLimitOptions(rateLimitOption)
                                    .WithServiceName(fileDynamicReRoute.ServiceName)
                                    .Build();

            var reRoute = new ReRouteBuilder()
                          .WithDownstreamReRoute(downstreamReRoute)
                          .Build();

            return(reRoute);
        }
Exemplo n.º 2
0
        private async Task <ReRoute> SetUpReRoute(FileReRoute fileReRoute, FileGlobalConfiguration globalConfiguration)
        {
            var fileReRouteOptions = _fileReRouteOptionsCreator.Create(fileReRoute);

            var requestIdKey = _requestIdKeyCreator.Create(fileReRoute, globalConfiguration);

            var reRouteKey = CreateReRouteKey(fileReRoute);

            var upstreamTemplatePattern = _upstreamTemplatePatternCreator.Create(fileReRoute);

            var serviceProviderConfiguration = _serviceProviderConfigCreator.Create(fileReRoute, globalConfiguration);

            var authOptionsForRoute = _authOptionsCreator.Create(fileReRoute);

            var claimsToHeaders = _claimsToThingCreator.Create(fileReRoute.AddHeadersToRequest);

            var claimsToClaims = _claimsToThingCreator.Create(fileReRoute.AddClaimsToRequest);

            var claimsToQueries = _claimsToThingCreator.Create(fileReRoute.AddQueriesToRequest);

            var qosOptions = _qosOptionsCreator.Create(fileReRoute);

            var rateLimitOption = _rateLimitOptionsCreator.Create(fileReRoute, globalConfiguration, fileReRouteOptions.EnableRateLimiting);

            var region = _regionCreator.Create(fileReRoute);

            var reRoute = new ReRouteBuilder()
                          .WithDownstreamPathTemplate(fileReRoute.DownstreamPathTemplate)
                          .WithUpstreamPathTemplate(fileReRoute.UpstreamPathTemplate)
                          .WithUpstreamHttpMethod(fileReRoute.UpstreamHttpMethod)
                          .WithUpstreamTemplatePattern(upstreamTemplatePattern)
                          .WithIsAuthenticated(fileReRouteOptions.IsAuthenticated)
                          .WithAuthenticationOptions(authOptionsForRoute)
                          .WithClaimsToHeaders(claimsToHeaders)
                          .WithClaimsToClaims(claimsToClaims)
                          .WithRouteClaimsRequirement(fileReRoute.RouteClaimsRequirement)
                          .WithIsAuthorised(fileReRouteOptions.IsAuthorised)
                          .WithClaimsToQueries(claimsToQueries)
                          .WithRequestIdKey(requestIdKey)
                          .WithIsCached(fileReRouteOptions.IsCached)
                          .WithCacheOptions(new CacheOptions(fileReRoute.FileCacheOptions.TtlSeconds, region))
                          .WithDownstreamScheme(fileReRoute.DownstreamScheme)
                          .WithLoadBalancer(fileReRoute.LoadBalancer)
                          .WithDownstreamHost(fileReRoute.DownstreamHost)
                          .WithDownstreamPort(fileReRoute.DownstreamPort)
                          .WithLoadBalancerKey(reRouteKey)
                          .WithServiceProviderConfiguraion(serviceProviderConfiguration)
                          .WithIsQos(fileReRouteOptions.IsQos)
                          .WithQosOptions(qosOptions)
                          .WithEnableRateLimiting(fileReRouteOptions.EnableRateLimiting)
                          .WithRateLimitOptions(rateLimitOption)
                          .Build();

            await SetupLoadBalancer(reRoute);

            SetupQosProvider(reRoute);
            return(reRoute);
        }
        private DownstreamReRoute SetUpDownstreamReRoute(FileReRoute fileReRoute, FileGlobalConfiguration globalConfiguration)
        {
            var fileReRouteOptions = _fileReRouteOptionsCreator.Create(fileReRoute);

            var requestIdKey = _requestIdKeyCreator.Create(fileReRoute, globalConfiguration);

            var reRouteKey = CreateReRouteKey(fileReRoute);

            var upstreamTemplatePattern = _upstreamTemplatePatternCreator.Create(fileReRoute);

            var authOptionsForRoute = _authOptionsCreator.Create(fileReRoute);

            var claimsToHeaders = _claimsToThingCreator.Create(fileReRoute.AddHeadersToRequest);

            var claimsToClaims = _claimsToThingCreator.Create(fileReRoute.AddClaimsToRequest);

            var claimsToQueries = _claimsToThingCreator.Create(fileReRoute.AddQueriesToRequest);

            var qosOptions = _qosOptionsCreator.Create(fileReRoute);

            var rateLimitOption = _rateLimitOptionsCreator.Create(fileReRoute, globalConfiguration, fileReRouteOptions.EnableRateLimiting);

            var region = _regionCreator.Create(fileReRoute);

            var httpHandlerOptions = _httpHandlerOptionsCreator.Create(fileReRoute);

            var hAndRs = _headerFAndRCreator.Create(fileReRoute);

            var downstreamAddresses = _downstreamAddressesCreator.Create(fileReRoute);

            var reRoute = new DownstreamReRouteBuilder()
                          .WithKey(fileReRoute.Key)
                          .WithDownstreamPathTemplate(fileReRoute.DownstreamPathTemplate)
                          .WithUpstreamPathTemplate(fileReRoute.UpstreamPathTemplate)
                          .WithUpstreamHttpMethod(fileReRoute.UpstreamHttpMethod)
                          .WithUpstreamTemplatePattern(upstreamTemplatePattern)
                          .WithIsAuthenticated(fileReRouteOptions.IsAuthenticated)
                          .WithAuthenticationOptions(authOptionsForRoute)
                          .WithClaimsToHeaders(claimsToHeaders)
                          .WithClaimsToClaims(claimsToClaims)
                          .WithRouteClaimsRequirement(fileReRoute.RouteClaimsRequirement)
                          .WithIsAuthorised(fileReRouteOptions.IsAuthorised)
                          .WithClaimsToQueries(claimsToQueries)
                          .WithRequestIdKey(requestIdKey)
                          .WithIsCached(fileReRouteOptions.IsCached)
                          .WithCacheOptions(new CacheOptions(fileReRoute.FileCacheOptions.TtlSeconds, region))
                          .WithDownstreamScheme(fileReRoute.DownstreamScheme)
                          .WithLoadBalancer(fileReRoute.LoadBalancer)
                          .WithDownstreamAddresses(downstreamAddresses)
                          .WithReRouteKey(reRouteKey)
                          .WithIsQos(fileReRouteOptions.IsQos)
                          .WithQosOptions(qosOptions)
                          .WithEnableRateLimiting(fileReRouteOptions.EnableRateLimiting)
                          .WithRateLimitOptions(rateLimitOption)
                          .WithHttpHandlerOptions(httpHandlerOptions)
                          .WithServiceName(fileReRoute.ServiceName)
                          .WithUseServiceDiscovery(fileReRoute.UseServiceDiscovery)
                          .WithUpstreamHeaderFindAndReplace(hAndRs.Upstream)
                          .WithDownstreamHeaderFindAndReplace(hAndRs.Downstream)
                          .WithUpstreamHost(fileReRoute.UpstreamHost)
                          .WithDelegatingHandlers(fileReRoute.DelegatingHandlers)
                          .WithAddHeadersToDownstream(hAndRs.AddHeadersToDownstream)
                          .WithAddHeadersToUpstream(hAndRs.AddHeadersToUpstream)
                          .Build();

            return(reRoute);
        }