Skip to content

Commit d779380

Browse files
FredolxBELL\frederic.lachapelle
andauthored
Add additionalMimeTypes to HostedContent (#23)
Co-authored-by: BELL\frederic.lachapelle <[email protected]>
1 parent 44a23ac commit d779380

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

src/SharpWebview/Content/HostedContent.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.IO;
23
using System.Linq;
34
using System.Net;
@@ -6,6 +7,7 @@
67
using Microsoft.AspNetCore.Builder;
78
using Microsoft.AspNetCore.Hosting;
89
using Microsoft.AspNetCore.Hosting.Server.Features;
10+
using Microsoft.AspNetCore.StaticFiles;
911
using Microsoft.Extensions.DependencyInjection;
1012
using Microsoft.Extensions.FileProviders;
1113
using Microsoft.Extensions.Logging;
@@ -16,9 +18,10 @@ public sealed class HostedContent : IWebviewContent
1618
{
1719
private readonly IWebHost _webHost;
1820

19-
public HostedContent(int port = 0, bool activateLog = false)
21+
public HostedContent(int port = 0, bool activateLog = false, IDictionary<string, string> additionalMimeTypes = null)
2022
{
2123
_webHost = WebHost.CreateDefaultBuilder()
24+
.ConfigureServices(s => s.AddSingleton(x => new StartupParameters() { AdditionalMimeTypes = additionalMimeTypes }))
2225
.UseStartup<Startup>()
2326
.UseKestrel(options => options.Listen(IPAddress.Loopback, port))
2427
.ConfigureLogging((logger) => { if(!activateLog) logger.ClearProviders(); })
@@ -37,16 +40,29 @@ public string ToWebviewUrl()
3740

3841
internal sealed class Startup
3942
{
43+
private StartupParameters startupParameters;
44+
public Startup(StartupParameters startupParameters)
45+
{
46+
this.startupParameters = startupParameters;
47+
}
4048
public void ConfigureServices(IServiceCollection services) { }
4149
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
4250
{
4351
var workingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
44-
app.UseFileServer(new FileServerOptions
52+
var fileServerOptions = new FileServerOptions
4553
{
4654
FileProvider = new PhysicalFileProvider(Path.Combine(workingDirectory, "app")),
4755
RequestPath = "",
48-
EnableDirectoryBrowsing = true
49-
});
56+
EnableDirectoryBrowsing = true,
57+
};
58+
if(startupParameters.AdditionalMimeTypes != null)
59+
{
60+
var extensionProvider = new FileExtensionContentTypeProvider();
61+
foreach (var mimeType in startupParameters.AdditionalMimeTypes)
62+
extensionProvider.Mappings.Add(mimeType);
63+
fileServerOptions.StaticFileOptions.ContentTypeProvider = extensionProvider;
64+
}
65+
app.UseFileServer(fileServerOptions);
5066
}
5167
}
5268
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace SharpWebview
6+
{
7+
public class StartupParameters
8+
{
9+
public IDictionary<string, string>? AdditionalMimeTypes { get; set; }
10+
}
11+
}

0 commit comments

Comments
 (0)