|
public class StsMiddleware |
|
{ |
|
private readonly Func<IDictionary<string, object>, Task> _next; |
|
private readonly IStsConfig _config; |
|
|
|
public StsMiddleware(Func<IDictionary<string, object>, Task> next) |
|
: this(next, new AppConfigStsConfig()) |
|
{} |
|
|
|
public StsMiddleware(Func<IDictionary<string, object>, Task> next, IStsConfig config = null) |
|
{ |
|
if (next == null) |
|
{ |
|
throw new ArgumentNullException("next"); |
|
} |
|
_next = next; |
|
_config = config ?? new AppConfigStsConfig(); |
|
} |
|
|
|
public async Task Invoke(IDictionary<string, object> environment) |
|
{ |
|
// etc |
|
await _next(environment); |
|
} |
|
} |
|
|
|
public class StsAdminMiddleware |
|
{ |
|
private readonly Func<IDictionary<string, object>, Task> _next; |
|
private readonly IAdminConfig _config; |
|
|
|
public StsAdminMiddleware(Func<IDictionary<string, object>, Task> next) |
|
: this(next, new AppConfigAdminConfig()) |
|
{} |
|
|
|
public StsAdminMiddleware(Func<IDictionary<string, object>, Task> next, IAdminConfig config = null) |
|
{ |
|
if (next == null) |
|
{ |
|
throw new ArgumentNullException("next"); |
|
} |
|
_next = next; |
|
_config = config ?? new AppConfigStsAdminConfig(); |
|
} |
|
|
|
public async Task Invoke(IDictionary<string, object> environment) |
|
{ |
|
// etc |
|
await _next(environment); |
|
} |
|
} |
|
|
|
public static class AppBuilderExtensions |
|
{ |
|
public static IAppBuilder UseSts(this IAppBuilder appBuilder, IStsConfig config = null) |
|
{ |
|
return builder.Use<StsMiddleware>(config); |
|
} |
|
|
|
public static IAppBuilder UseStsAdmin(this IAppBuilder appBuilder, IStsAdminConfig config = null) |
|
{ |
|
return builder.Use<StsAdminMiddleware>(config); |
|
} |
|
} |
|
|
|
// Example usage |
|
public class Startup |
|
{ |
|
public void Configuration(IAppBuilder app) |
|
{ |
|
var config = new DatabaseConfig(); |
|
app |
|
.Map("/sts", stsBranch => stsBranch.UseSts(config)) |
|
.Map("/admin", adminBranch => adminBranch.UseStsadmin(config)); |
|
} |
|
|
|
private class DatabaseConfig : IStsConfig, IStsAdminConfig |
|
{ |
|
//.... |
|
} |
|
} |