diff --git a/src/Microsoft.AspNet.Owin/Microsoft.AspNet.Owin.kproj b/src/Microsoft.AspNet.Owin/Microsoft.AspNet.Owin.kproj index fb37b90152..210e9491a3 100644 --- a/src/Microsoft.AspNet.Owin/Microsoft.AspNet.Owin.kproj +++ b/src/Microsoft.AspNet.Owin/Microsoft.AspNet.Owin.kproj @@ -25,7 +25,6 @@ - \ No newline at end of file diff --git a/src/Microsoft.AspNet.Owin/OwinExtensions.cs b/src/Microsoft.AspNet.Owin/OwinExtensions.cs index 135973e654..a98c449a25 100644 --- a/src/Microsoft.AspNet.Owin/OwinExtensions.cs +++ b/src/Microsoft.AspNet.Owin/OwinExtensions.cs @@ -3,28 +3,86 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.Owin; +using Microsoft.AspNet.PipelineCore; namespace Microsoft.AspNet { using AppFunc = Func, Task>; + using CreateMiddleware = Func< + Func, Task>, + Func, Task> + >; + using AddMiddleware = Action, Task>, + Func, Task> + >>; public static class OwinExtensions { - public static IBuilder UseOwinMiddleware(this IBuilder builder, Func middleware) + public static AddMiddleware UseOwin(this IBuilder builder) { - Func middleware1 = next1 => + return middleware => { - AppFunc exitMiddlware = env => + Func middleware1 = next1 => { - return next1((HttpContext)env[typeof(HttpContext).FullName]); + AppFunc exitMiddlware = env => + { + return next1((HttpContext)env[typeof(HttpContext).FullName]); + }; + var app = middleware(exitMiddlware); + return httpContext => + { + return app.Invoke(new OwinEnvironment(httpContext)); + }; }; - var app = middleware(exitMiddlware); - return httpContext => + builder.Use(middleware1); + }; + } + + public static IBuilder UseOwin(this IBuilder builder, Action pipeline) + { + pipeline(builder.UseOwin()); + return builder; + } + + public static IBuilder UseBuilder(this AddMiddleware app) + { + var builder = new Builder(serviceProvider: null); + + CreateMiddleware middleware = CreateMiddlewareFactory(exit => + { + builder.Use(ignored => exit); + return builder.Build(); + }); + + app(middleware); + return builder; + } + + private static CreateMiddleware CreateMiddlewareFactory(Func middleware) + { + return next => + { + var app = middleware(httpContext => { - return app.Invoke(new OwinEnvironment(httpContext)); + return next(httpContext.GetFeature().Environment); + }); + + return env => + { + return app.Invoke( + new DefaultHttpContext( + new FeatureCollection( + new OwinFeatureCollection(env)))); }; }; - return builder.Use(middleware1); + } + + public static AddMiddleware UseBuilder(this AddMiddleware app, Action pipeline) + { + var builder = app.UseBuilder(); + pipeline(builder); + return app; } } } diff --git a/src/Microsoft.AspNet.Owin/OwinMiddlewareFactory.cs b/src/Microsoft.AspNet.Owin/OwinMiddlewareFactory.cs deleted file mode 100644 index 96bbaa48f5..0000000000 --- a/src/Microsoft.AspNet.Owin/OwinMiddlewareFactory.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.AspNet.Abstractions; -using Microsoft.AspNet.FeatureModel; -using Microsoft.AspNet.PipelineCore; - -namespace Microsoft.AspNet.Owin -{ - using AppFunc = Func, Task>; - - public static class OwinMiddlewareFactory - { - public static Func Create(Action configuration) - { - return Create(services: null, configuration: configuration); - } - - public static Func Create(IServiceProvider services, Action configuration) - { - var builder = new Builder(services); - configuration(builder); - - return Create(exit => - { - builder.Use(ignored => exit); - return builder.Build(); - }); - } - - public static Func Create(Func middleware) - { - return next => - { - var app = middleware(httpContext => - { - return next(httpContext.GetFeature().Environment); - }); - - return env => - { - return app.Invoke( - new DefaultHttpContext( - new FeatureCollection( - new OwinFeatureCollection(env)))); - }; - }; - } - } -}