using System; namespace FastGithub { /// /// 中间件创建者扩展 /// public static class PipelineBuilderExtensions { /// /// 中断执行中间件 /// /// /// /// 处理者 /// public static IPipelineBuilder Run(this IPipelineBuilder builder, InvokeDelegate handler) { return builder.Use(_ => handler); } /// /// 条件中间件 /// /// /// /// /// /// public static IPipelineBuilder When(this IPipelineBuilder builder, Func predicate, InvokeDelegate handler) { return builder.Use(next => async context => { if (predicate.Invoke(context) == true) { await handler.Invoke(context); } else { await next(context); } }); } /// /// 条件中间件 /// /// /// /// /// /// public static IPipelineBuilder When(this IPipelineBuilder builder, Func predicate, Action> configureAction) { return builder.Use(next => async context => { if (predicate.Invoke(context) == true) { var branchBuilder = builder.New(); configureAction(branchBuilder); await branchBuilder.Build().Invoke(context); } else { await next(context); } }); } } }