From cd813844a0d215401755709729b03aad9a20f790 Mon Sep 17 00:00:00 2001 From: John Luo Date: Thu, 7 Jan 2016 16:37:39 -0800 Subject: [PATCH] Updating to new options pattern --- .../WebSocketMiddleware.cs | 14 ++++++++++-- .../WebSocketMiddlewareExtensions.cs | 22 +++---------------- .../WebSocketOptions.cs | 2 +- .../project.json | 3 ++- test/AutobahnTestServer/Startup.cs | 5 ++--- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddleware.cs b/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddleware.cs index c3c48d91e9..8329d0789e 100644 --- a/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddleware.cs +++ b/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddleware.cs @@ -10,6 +10,7 @@ using Microsoft.AspNet.Builder; using Microsoft.AspNet.Http; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.WebSockets.Protocol; +using Microsoft.Extensions.Options; namespace Microsoft.AspNet.WebSockets.Server { @@ -18,10 +19,19 @@ namespace Microsoft.AspNet.WebSockets.Server private readonly RequestDelegate _next; private readonly WebSocketOptions _options; - public WebSocketMiddleware(RequestDelegate next, WebSocketOptions options) + public WebSocketMiddleware(RequestDelegate next, IOptions options) { + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + _next = next; - _options = options; + _options = options.Value; // TODO: validate options. } diff --git a/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddlewareExtensions.cs b/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddlewareExtensions.cs index a4cbdc7f61..8e71aab70a 100644 --- a/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddlewareExtensions.cs +++ b/src/Microsoft.AspNet.WebSockets.Server/WebSocketMiddlewareExtensions.cs @@ -3,6 +3,7 @@ using System; using Microsoft.AspNet.WebSockets.Server; +using Microsoft.Extensions.Options; namespace Microsoft.AspNet.Builder { @@ -15,24 +16,7 @@ namespace Microsoft.AspNet.Builder throw new ArgumentNullException(nameof(app)); } - return app.UseWebSockets(options => { }); - } - - public static IApplicationBuilder UseWebSockets(this IApplicationBuilder app, Action configureOptions) - { - if (app == null) - { - throw new ArgumentNullException(nameof(app)); - } - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - - var options = new WebSocketOptions(); - configureOptions(options); - - return app.UseMiddleware(options); + return app.UseMiddleware(); } public static IApplicationBuilder UseWebSockets(this IApplicationBuilder app, WebSocketOptions options) @@ -46,7 +30,7 @@ namespace Microsoft.AspNet.Builder throw new ArgumentNullException(nameof(options)); } - return app.UseMiddleware(options); + return app.UseMiddleware(Options.Create(options)); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.WebSockets.Server/WebSocketOptions.cs b/src/Microsoft.AspNet.WebSockets.Server/WebSocketOptions.cs index 09a155da46..69cfe2e177 100644 --- a/src/Microsoft.AspNet.WebSockets.Server/WebSocketOptions.cs +++ b/src/Microsoft.AspNet.WebSockets.Server/WebSocketOptions.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.AspNet.WebSockets.Server +namespace Microsoft.AspNet.Builder { /// /// Configuration options for the WebSocketMiddleware diff --git a/src/Microsoft.AspNet.WebSockets.Server/project.json b/src/Microsoft.AspNet.WebSockets.Server/project.json index 358d798eeb..0c5563092e 100644 --- a/src/Microsoft.AspNet.WebSockets.Server/project.json +++ b/src/Microsoft.AspNet.WebSockets.Server/project.json @@ -11,7 +11,8 @@ }, "dependencies": { "Microsoft.AspNet.Http.Extensions": "1.0.0-*", - "Microsoft.AspNet.WebSockets.Protocol": "1.0.0-*" + "Microsoft.AspNet.WebSockets.Protocol": "1.0.0-*", + "Microsoft.Extensions.Options": "1.0.0-*" }, "frameworks": { "net451": {}, diff --git a/test/AutobahnTestServer/Startup.cs b/test/AutobahnTestServer/Startup.cs index 22fd8aae83..bc2bc28479 100644 --- a/test/AutobahnTestServer/Startup.cs +++ b/test/AutobahnTestServer/Startup.cs @@ -7,7 +7,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; -using Microsoft.AspNet.Http; namespace AutobahnTestServer { @@ -18,9 +17,9 @@ namespace AutobahnTestServer app.Map("/Managed", managedWebSocketsApp => { // Comment this out to test native server implementations - managedWebSocketsApp.UseWebSockets(options => + managedWebSocketsApp.UseWebSockets(new WebSocketOptions { - options.ReplaceFeature = true; + ReplaceFeature = true }); managedWebSocketsApp.Use(async (context, next) =>