mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-23 00:52:51 +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
|
||||
{
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Diagnostics;
|
||||
using DependencyInjection;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Ocelot.Configuration;
|
||||
using Ocelot.Configuration.Creator;
|
||||
using Ocelot.Configuration.File;
|
||||
using Ocelot.Configuration.Repository;
|
||||
using Ocelot.Configuration.Setter;
|
||||
using Ocelot.Responses;
|
||||
using Ocelot.Logging;
|
||||
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
|
||||
{
|
||||
@ -42,6 +42,30 @@
|
||||
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)
|
||||
{
|
||||
var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices);
|
||||
|
Loading…
x
Reference in New Issue
Block a user