From 79a4016b132aa73c0bde85d1e923b9cff4409ce1 Mon Sep 17 00:00:00 2001 From: Eugene Bekker Date: Sat, 10 Feb 2018 14:01:40 -0500 Subject: [PATCH] Refactoring middleware configuration API --- .../BlazorAppBuilderExtensions.cs | 27 ++++++++++++++----- .../BlazorOptions.cs | 14 ++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/Microsoft.AspNetCore.Blazor.Server/BlazorOptions.cs diff --git a/src/Microsoft.AspNetCore.Blazor.Server/BlazorAppBuilderExtensions.cs b/src/Microsoft.AspNetCore.Blazor.Server/BlazorAppBuilderExtensions.cs index e3097bd052..366ebca7cc 100644 --- a/src/Microsoft.AspNetCore.Blazor.Server/BlazorAppBuilderExtensions.cs +++ b/src/Microsoft.AspNetCore.Blazor.Server/BlazorAppBuilderExtensions.cs @@ -7,27 +7,40 @@ using Microsoft.Extensions.FileProviders; using System.Collections.Generic; using System.IO; using System.Net.Mime; +using System; namespace Microsoft.AspNetCore.Builder { public static class BlazorAppBuilderExtensions { + /// + /// Configures the middleware pipeline to work with Blazor. + /// + /// + /// The name of the client assembly relative to the current bin directory. public static void UseBlazor( this IApplicationBuilder applicationBuilder, string clientAssemblyName) { var binDir = Path.GetDirectoryName(typeof(BlazorConfig).Assembly.Location); var clientAssemblyPath = Path.Combine(binDir, $"{clientAssemblyName}.dll"); - applicationBuilder.UseBlazorInternal(clientAssemblyPath); + applicationBuilder.UseBlazor(new BlazorOptions + { + ClientAssemblyPath = clientAssemblyPath, + }); } - - // TODO: Change this combination of APIs to make it possible to supply either - // an assembly name (resolved to current bin dir) or full assembly path - internal static void UseBlazorInternal( + + /// + /// Configures the middleware pipeline to work with Blazor. + /// + /// + /// + public static void UseBlazor( this IApplicationBuilder applicationBuilder, - string clientAssemblyPath) + BlazorOptions options) { - var config = BlazorConfig.Read(clientAssemblyPath); + var config = BlazorConfig.Read(options.ClientAssemblyPath); var clientAppBinDir = Path.GetDirectoryName(config.SourceOutputAssemblyPath); var clientAppDistDir = Path.Combine(clientAppBinDir, "dist"); var distFileProvider = new PhysicalFileProvider(clientAppDistDir); diff --git a/src/Microsoft.AspNetCore.Blazor.Server/BlazorOptions.cs b/src/Microsoft.AspNetCore.Blazor.Server/BlazorOptions.cs new file mode 100644 index 0000000000..d6556dbc27 --- /dev/null +++ b/src/Microsoft.AspNetCore.Blazor.Server/BlazorOptions.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.AspNetCore.Blazor.Server +{ + public class BlazorOptions + { + /// + /// Full path to the client assembly. + /// + public string ClientAssemblyPath { get; set; } + } +}