mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 06:42:50 +08:00
add more flexible method to config ocelot pipeline (#880)
This commit is contained in:
parent
d147910e8e
commit
1eb092ffbd
@ -1,22 +1,22 @@
|
|||||||
namespace Ocelot.Middleware
|
namespace Ocelot.Middleware
|
||||||
{
|
{
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using DependencyInjection;
|
using DependencyInjection;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
using Ocelot.Configuration;
|
using Ocelot.Configuration;
|
||||||
using Ocelot.Configuration.Creator;
|
using Ocelot.Configuration.Creator;
|
||||||
using Ocelot.Configuration.File;
|
using Ocelot.Configuration.File;
|
||||||
using Ocelot.Configuration.Repository;
|
using Ocelot.Configuration.Repository;
|
||||||
using Ocelot.Configuration.Setter;
|
using Ocelot.Configuration.Setter;
|
||||||
using Ocelot.Responses;
|
|
||||||
using Ocelot.Logging;
|
using Ocelot.Logging;
|
||||||
using Ocelot.Middleware.Pipeline;
|
using Ocelot.Middleware.Pipeline;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Ocelot.Responses;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public static class OcelotMiddlewareExtensions
|
public static class OcelotMiddlewareExtensions
|
||||||
{
|
{
|
||||||
@ -42,6 +42,30 @@
|
|||||||
return CreateOcelotPipeline(builder, pipelineConfiguration);
|
return CreateOcelotPipeline(builder, pipelineConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Task<IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action<IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction)
|
||||||
|
=> UseOcelot(app, builderAction, new OcelotPipelineConfiguration());
|
||||||
|
|
||||||
|
public static async Task<IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action<IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction, OcelotPipelineConfiguration configuration)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
|
private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration)
|
||||||
{
|
{
|
||||||
var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);
|
var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user