Exemplo n.º 1
0
        /// <summary>
        /// Registers Ocelot with a combination of default middlewares and optional middlewares in the configuration
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="pipelineConfiguration"></param>
        /// <returns></returns>
        public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
        {
            var configuration = await CreateConfiguration(builder);

            CreateAdministrationArea(builder, configuration);

            if (UsingRafty(builder))
            {
                SetUpRafty(builder);
            }

            ConfigureDiagnosticListener(builder);

            var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);

            pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration);

            var firstDelegate = pipelineBuilder.Build();

            //inject first delegate into first piece of asp.net middleware..maybe not like this
            //then because we are updating the http context in ocelot it comes out correct for
            //rest of asp.net..

            builder.Use(async(context, task) =>
            {
                var downstreamContext = new DownstreamContext(context);
                await firstDelegate.Invoke(downstreamContext);
            });

            return(builder);
        }
        private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
        {
            var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);

            //pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration);
            //使用自定义管道扩展 2018-11-15 金焰的世界
            pipelineBuilder.BuildAhphOcelotPipeline(pipelineConfiguration);

            var firstDelegate = pipelineBuilder.Build();

            /*
             * inject first delegate into first piece of asp.net middleware..maybe not like this
             * then because we are updating the http context in ocelot it comes out correct for
             * rest of asp.net..
             */

            builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";

            builder.Use(async(context, task) =>
            {
                var downstreamContext = new DownstreamContext(context);
                await firstDelegate.Invoke(downstreamContext);
            });

            return(builder);
        }
Exemplo n.º 3
0
        private void WhenIUseAGeneric()
        {
            var provider = _services.BuildServiceProvider();
            IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider);

            builder = builder.UseMiddleware <Ocelot.Errors.Middleware.ExceptionHandlerMiddleware>();
            var del = builder.Build();

            _downstreamContext = new DownstreamContext(new DefaultHttpContext());
            del.Invoke(_downstreamContext);
        }
Exemplo n.º 4
0
        public void Middleware_Multi_Parameters_Invoke()
        {
            var provider = _services.BuildServiceProvider();
            IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider);

            builder = builder.UseMiddleware <MultiParametersInvokeMiddleware>();
            var del = builder.Build();

            _downstreamContext = new DownstreamContext(new DefaultHttpContext());
            del.Invoke(_downstreamContext);
        }
        private void GivenTheDepedenciesAreSetUp()
        {
            IConfigurationBuilder test = new ConfigurationBuilder();
            var root     = test.Build();
            var services = new ServiceCollection();

            services.AddSingleton <IConfiguration>(root);
            services.AddOcelot();
            var provider = services.BuildServiceProvider();

            _builder = new OcelotPipelineBuilder(provider);
        }
        private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
        {
            OcelotPipelineBuilder ocelotPipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);

            ocelotPipelineBuilder.BuildOcelotPipeline(pipelineConfiguration);
            OcelotRequestDelegate firstDelegate = ocelotPipelineBuilder.Build();

            builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";
            builder.Use(async delegate(HttpContext context, Func <Task> task)
            {
                DownstreamContext downstreamContext = new DownstreamContext(context);
                await firstDelegate(downstreamContext);
            });
            return(builder);
        }
        private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
        {
            var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);

            pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration);
            var firstDelegate = pipelineBuilder.Build();

            builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";
            builder.Use(async(context, task) =>
            {
                var downstreamContext = new DownstreamContext(context);
                await firstDelegate.Invoke(downstreamContext);
            });
            return(builder);
        }
Exemplo n.º 8
0
        private void WhenIUseAFunc()
        {
            _counter = 0;
            var provider = _services.BuildServiceProvider();
            IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider);

            builder = builder.Use(async(ctx, next) =>
            {
                _counter++;
                await next.Invoke();
            });
            var del = builder.Build();

            _downstreamContext = new DownstreamContext(new DefaultHttpContext());
            del.Invoke(_downstreamContext);
        }
        public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action <IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction, OcelotPipelineConfiguration configuration)
        {
            await CreateConfiguration(app);

            ConfigureDiagnosticListener(app);
            OcelotPipelineBuilder ocelotPipelineBuilder = new OcelotPipelineBuilder(app.ApplicationServices);

            builderAction?.Invoke(ocelotPipelineBuilder, configuration ?? new OcelotPipelineConfiguration());
            OcelotRequestDelegate ocelotDelegate = ocelotPipelineBuilder.Build();

            app.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";
            app.Use(async delegate(HttpContext context, Func <Task> task)
            {
                DownstreamContext downstreamContext = new DownstreamContext(context);
                await ocelotDelegate(downstreamContext);
            });
            return(app);
        }
Exemplo n.º 10
0
        private void GivenTheDepedenciesAreSetUp()
        {
            IConfigurationBuilder test = new ConfigurationBuilder();
            var root     = test.Build();
            var services = new ServiceCollection();

            services.AddSingleton <IConfiguration>(root);
            services.AddDiscoveryClient(new DiscoveryOptions
            {
                ClientType    = DiscoveryClientType.EUREKA,
                ClientOptions = new EurekaClientOptions()
                {
                    ShouldFetchRegistry      = false,
                    ShouldRegisterWithEureka = false
                }
            });
            services.AddOcelot();
            var provider = services.BuildServiceProvider();

            _builder = new OcelotPipelineBuilder(provider);
        }
Exemplo n.º 11
0
        public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
        {
            var configuration = await CreateConfiguration(builder);

            CreateAdministrationArea(builder, configuration);

            if (UsingRafty(builder))
            {
                SetUpRafty(builder);
            }

            if (UsingEurekaServiceDiscoveryProvider(configuration))
            {
                builder.UseDiscoveryClient();
            }

            ConfigureDiagnosticListener(builder);

            var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);

            pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration);

            var firstDelegate = pipelineBuilder.Build();

            /*
             * inject first delegate into first piece of asp.net middleware..maybe not like this
             * then because we are updating the http context in ocelot it comes out correct for
             * rest of asp.net..
             */

            builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";

            builder.Use(async(context, task) =>
            {
                var downstreamContext = new DownstreamContext(context);
                await firstDelegate.Invoke(downstreamContext);
            });

            return(builder);
        }
        public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action <IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction, OcelotPipelineConfiguration configuration)
        {
            var internalConfiguration = await CreateConfiguration(app); // initConfiguration

            ConfigureDiagnosticListener(app);

            var ocelotPipelineBuilder = new OcelotPipelineBuilder(app.ApplicationServices);

            builderAction?.Invoke(ocelotPipelineBuilder, configuration ?? new OcelotPipelineConfiguration());

            var ocelotDelegate = ocelotPipelineBuilder.Build();

            app.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware";

            app.Use(async(context, task) =>
            {
                var downstreamContext = new DownstreamContext(context);
                await ocelotDelegate.Invoke(downstreamContext);
            });

            return(app);
        }