diff --git a/samples/StaticFileSample/Startup.cs b/samples/StaticFileSample/Startup.cs index f481a4deab..02fef1c41b 100644 --- a/samples/StaticFileSample/Startup.cs +++ b/samples/StaticFileSample/Startup.cs @@ -1,6 +1,5 @@ using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; -using Microsoft.AspNet.StaticFiles; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -18,9 +17,9 @@ namespace StaticFilesSample // Displays all log levels factory.AddConsole(LogLevel.Debug); - app.UseFileServer(new FileServerOptions() + app.UseFileServer(options => { - EnableDirectoryBrowsing = true, + options.EnableDirectoryBrowsing = true; }); } diff --git a/src/Microsoft.AspNet.StaticFiles/DefaultFilesExtensions.cs b/src/Microsoft.AspNet.StaticFiles/DefaultFilesExtensions.cs index 29bebd7994..ec00cd1d8d 100644 --- a/src/Microsoft.AspNet.StaticFiles/DefaultFilesExtensions.cs +++ b/src/Microsoft.AspNet.StaticFiles/DefaultFilesExtensions.cs @@ -15,53 +15,55 @@ namespace Microsoft.AspNet.Builder /// /// Enables default file mapping on the current path /// - /// + /// /// - public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder builder) + public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseDefaultFiles(new DefaultFilesOptions()); + return app.UseDefaultFiles(options => { }); } /// /// Enables default file mapping for the given request path /// - /// + /// /// The relative request path. /// - public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder builder, string requestPath) + public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app, string requestPath) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseDefaultFiles(new DefaultFilesOptions() { RequestPath = new PathString(requestPath) }); + return app.UseDefaultFiles(options => { options.RequestPath = new PathString(requestPath); }); } /// /// Enables default file mapping with the given options /// - /// - /// + /// + /// /// - public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder builder, DefaultFilesOptions options) + public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app, Action configureOptions) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); + } + if (configureOptions == null) + { + throw new ArgumentNullException(nameof(configureOptions)); } - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } + var options = new DefaultFilesOptions(); + configureOptions(options); - return builder.UseMiddleware(options); + return app.UseMiddleware(options); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.StaticFiles/DirectoryBrowserExtensions.cs b/src/Microsoft.AspNet.StaticFiles/DirectoryBrowserExtensions.cs index 01539129cb..438ce7baaf 100644 --- a/src/Microsoft.AspNet.StaticFiles/DirectoryBrowserExtensions.cs +++ b/src/Microsoft.AspNet.StaticFiles/DirectoryBrowserExtensions.cs @@ -15,53 +15,55 @@ namespace Microsoft.AspNet.Builder /// /// Enable directory browsing on the current path /// - /// + /// /// - public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder builder) + public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder app) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseDirectoryBrowser(new DirectoryBrowserOptions()); + return app.UseDirectoryBrowser(options => { }); } /// /// Enables directory browsing for the given request path /// - /// + /// /// The relative request path. /// - public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder builder, string requestPath) + public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder app, string requestPath) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseDirectoryBrowser(new DirectoryBrowserOptions() { RequestPath = new PathString(requestPath) }); + return app.UseDirectoryBrowser(options => { options.RequestPath = new PathString(requestPath); }); } /// /// Enable directory browsing with the given options /// - /// - /// + /// + /// /// - public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder builder, DirectoryBrowserOptions options) + public static IApplicationBuilder UseDirectoryBrowser(this IApplicationBuilder app, Action configureOptions) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); + } + if (configureOptions == null) + { + throw new ArgumentNullException(nameof(configureOptions)); } - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } + var options = new DirectoryBrowserOptions(); + configureOptions(options); - return builder.UseMiddleware(options); + return app.UseMiddleware(options); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.StaticFiles/FileServerExtensions.cs b/src/Microsoft.AspNet.StaticFiles/FileServerExtensions.cs index 58ebe8f6d6..d5cd531365 100644 --- a/src/Microsoft.AspNet.StaticFiles/FileServerExtensions.cs +++ b/src/Microsoft.AspNet.StaticFiles/FileServerExtensions.cs @@ -16,45 +16,45 @@ namespace Microsoft.AspNet.Builder /// /// Enable all static file middleware (except directory browsing) for the current request path in the current directory. /// - /// + /// /// - public static IApplicationBuilder UseFileServer(this IApplicationBuilder builder) + public static IApplicationBuilder UseFileServer(this IApplicationBuilder app) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseFileServer(new FileServerOptions()); + return app.UseFileServer(options => { }); } /// /// Enable all static file middleware on for the current request path in the current directory. /// - /// + /// /// Should directory browsing be enabled? /// - public static IApplicationBuilder UseFileServer(this IApplicationBuilder builder, bool enableDirectoryBrowsing) + public static IApplicationBuilder UseFileServer(this IApplicationBuilder app, bool enableDirectoryBrowsing) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseFileServer(new FileServerOptions() { EnableDirectoryBrowsing = enableDirectoryBrowsing }); + return app.UseFileServer(options => { options.EnableDirectoryBrowsing = enableDirectoryBrowsing; }); } /// /// Enables all static file middleware (except directory browsing) for the given request path from the directory of the same name /// - /// + /// /// The relative request path. /// - public static IApplicationBuilder UseFileServer(this IApplicationBuilder builder, string requestPath) + public static IApplicationBuilder UseFileServer(this IApplicationBuilder app, string requestPath) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } if (requestPath == null) @@ -62,44 +62,40 @@ namespace Microsoft.AspNet.Builder throw new ArgumentNullException(nameof(requestPath)); } - return builder.UseFileServer(new FileServerOptions() { RequestPath = new PathString(requestPath) }); + return app.UseFileServer(options => { options.RequestPath = new PathString(requestPath); }); } /// /// Enable all static file middleware with the given options /// - /// - /// + /// + /// /// - public static IApplicationBuilder UseFileServer(this IApplicationBuilder builder, FileServerOptions options) + public static IApplicationBuilder UseFileServer(this IApplicationBuilder app, Action configureOptions) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); + } + if (configureOptions == null) + { + throw new ArgumentNullException(nameof(configureOptions)); } - if (options == null) + var fileServerOptions = new FileServerOptions(); + configureOptions(fileServerOptions); + + if (fileServerOptions.EnableDefaultFiles) { - throw new ArgumentNullException(nameof(options)); + app = app.UseDefaultFiles(options => { options = fileServerOptions.DefaultFilesOptions; }); } - if (options == null) + if (fileServerOptions.EnableDirectoryBrowsing) { - throw new ArgumentNullException(nameof(options)); + app = app.UseDirectoryBrowser(options => { options = fileServerOptions.DirectoryBrowserOptions; }); } - if (options.EnableDefaultFiles) - { - builder = builder.UseDefaultFiles(options.DefaultFilesOptions); - } - - if (options.EnableDirectoryBrowsing) - { - builder = builder.UseDirectoryBrowser(options.DirectoryBrowserOptions); - } - - return builder - .UseStaticFiles(options.StaticFileOptions); + return app.UseStaticFiles(options => { options = fileServerOptions.StaticFileOptions; }); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.StaticFiles/StaticFileExtensions.cs b/src/Microsoft.AspNet.StaticFiles/StaticFileExtensions.cs index a1912f5bad..58b9f77ec8 100644 --- a/src/Microsoft.AspNet.StaticFiles/StaticFileExtensions.cs +++ b/src/Microsoft.AspNet.StaticFiles/StaticFileExtensions.cs @@ -15,53 +15,55 @@ namespace Microsoft.AspNet.Builder /// /// Enables static file serving for the current request path /// - /// + /// /// - public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder builder) + public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder app) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseStaticFiles(new StaticFileOptions()); + return app.UseStaticFiles(options => { }); } /// /// Enables static file serving for the given request path /// - /// + /// /// The relative request path. /// - public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder builder, string requestPath) + public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder app, string requestPath) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); } - return builder.UseStaticFiles(new StaticFileOptions() { RequestPath = new PathString(requestPath) }); + return app.UseStaticFiles(options => { options.RequestPath = new PathString(requestPath); }); } /// /// Enables static file serving with the given options /// - /// - /// + /// + /// /// - public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder builder, StaticFileOptions options) + public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder app, Action configureOptions) { - if (builder == null) + if (app == null) { - throw new ArgumentNullException(nameof(builder)); + throw new ArgumentNullException(nameof(app)); + } + if (configureOptions == null) + { + throw new ArgumentNullException(nameof(configureOptions)); } - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } + var options = new StaticFileOptions(); + configureOptions(options); - return builder.UseMiddleware(options); + return app.UseMiddleware(options); } } } diff --git a/test/Microsoft.AspNet.StaticFiles.Tests/DefaultFilesMiddlewareTests.cs b/test/Microsoft.AspNet.StaticFiles.Tests/DefaultFilesMiddlewareTests.cs index 4efb5165d8..b7ea70c822 100644 --- a/test/Microsoft.AspNet.StaticFiles.Tests/DefaultFilesMiddlewareTests.cs +++ b/test/Microsoft.AspNet.StaticFiles.Tests/DefaultFilesMiddlewareTests.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNet.StaticFiles public async Task NullArguments() { // No exception, default provided - StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() { FileProvider = null })); + StaticFilesTestServer.Create(app => app.UseDefaultFiles(options => { options.FileProvider = null; })); // PathString(null) is OK. var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles((string)null)); @@ -56,10 +56,10 @@ namespace Microsoft.AspNet.StaticFiles { var server = StaticFilesTestServer.Create(app => { - app.UseDefaultFiles(new DefaultFilesOptions() + app.UseDefaultFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }); app.Run(context => context.Response.WriteAsync(context.Request.Path.Value)); }); @@ -95,10 +95,10 @@ namespace Microsoft.AspNet.StaticFiles { var server = StaticFilesTestServer.Create(app => { - app.UseDefaultFiles(new DefaultFilesOptions() + app.UseDefaultFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }); app.Run(context => context.Response.WriteAsync(context.Request.Path.Value)); }); @@ -132,10 +132,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() + var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; })); var response = await server.CreateRequest(requestUrl + queryString).GetAsync(); @@ -170,10 +170,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvder = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() + var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvder + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvder; })); var response = await server.CreateRequest(requestUrl).GetAsync(); diff --git a/test/Microsoft.AspNet.StaticFiles.Tests/DirectoryBrowserMiddlewareTests.cs b/test/Microsoft.AspNet.StaticFiles.Tests/DirectoryBrowserMiddlewareTests.cs index 3a7e711099..0ba962fd82 100644 --- a/test/Microsoft.AspNet.StaticFiles.Tests/DirectoryBrowserMiddlewareTests.cs +++ b/test/Microsoft.AspNet.StaticFiles.Tests/DirectoryBrowserMiddlewareTests.cs @@ -23,12 +23,12 @@ namespace Microsoft.AspNet.StaticFiles public async Task NullArguments() { Assert.Throws(() => StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() { Formatter = null }), + app => app.UseDirectoryBrowser(options => { options.Formatter = null; }), services => services.AddDirectoryBrowser())); // No exception, default provided StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() { FileProvider = null }), + app => app.UseDirectoryBrowser(options => { options.FileProvider = null; }), services => services.AddDirectoryBrowser()); // PathString(null) is OK. @@ -66,10 +66,10 @@ namespace Microsoft.AspNet.StaticFiles using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { var server = StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() + app => app.UseDirectoryBrowser(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }), services => services.AddDirectoryBrowser()); var response = await server.CreateRequest(requestUrl).GetAsync(); @@ -103,10 +103,10 @@ namespace Microsoft.AspNet.StaticFiles using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { var server = StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() + app => app.UseDirectoryBrowser(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }), services => services.AddDirectoryBrowser()); var response = await server.CreateRequest(requestUrl).GetAsync(); @@ -145,10 +145,10 @@ namespace Microsoft.AspNet.StaticFiles using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { var server = StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() + app => app.UseDirectoryBrowser(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }), services => services.AddDirectoryBrowser()); @@ -184,10 +184,10 @@ namespace Microsoft.AspNet.StaticFiles using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { var server = StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() + app => app.UseDirectoryBrowser(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }), services => services.AddDirectoryBrowser()); @@ -220,10 +220,10 @@ namespace Microsoft.AspNet.StaticFiles using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { var server = StaticFilesTestServer.Create( - app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() + app => app.UseDirectoryBrowser(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; }), services => services.AddDirectoryBrowser()); diff --git a/test/Microsoft.AspNet.StaticFiles.Tests/StaticFileMiddlewareTests.cs b/test/Microsoft.AspNet.StaticFiles.Tests/StaticFileMiddlewareTests.cs index e5cd183da9..3d7b34e4d6 100644 --- a/test/Microsoft.AspNet.StaticFiles.Tests/StaticFileMiddlewareTests.cs +++ b/test/Microsoft.AspNet.StaticFiles.Tests/StaticFileMiddlewareTests.cs @@ -32,10 +32,10 @@ namespace Microsoft.AspNet.StaticFiles [Fact] public async Task NullArguments() { - Assert.Throws(() => StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() { ContentTypeProvider = null }))); + Assert.Throws(() => StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { options.ContentTypeProvider = null; }))); // No exception, default provided - StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() { FileProvider = null })); + StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { options.FileProvider = null; })); // PathString(null) is OK. var server = StaticFilesTestServer.Create(app => app.UseStaticFiles((string)null)); @@ -52,10 +52,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() + var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; })); var response = await server.CreateRequest(requestUrl).GetAsync(); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); @@ -89,10 +89,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() + var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; })); var response = await server.CreateRequest(requestUrl).GetAsync(); @@ -113,10 +113,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() + var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; })); var response = await server.CreateRequest(requestUrl).PostAsync(); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); @@ -133,10 +133,10 @@ namespace Microsoft.AspNet.StaticFiles { using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))) { - var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() + var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(options => { - RequestPath = new PathString(baseUrl), - FileProvider = fileProvider + options.RequestPath = new PathString(baseUrl); + options.FileProvider = fileProvider; })); var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");