Skip to content

Instantly share code, notes, and snippets.

@leastprivilege
Created December 11, 2013 11:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leastprivilege/7908667 to your computer and use it in GitHub Desktop.
Save leastprivilege/7908667 to your computer and use it in GitHub Desktop.
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
{
//....
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment