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))));
- };
- };
- }
- }
-}