Skip to content

Commit

Permalink
Add AdditionalServiceRegistration action for custom ASP.NET Core DI s…
Browse files Browse the repository at this point in the history
…etup
  • Loading branch information
starkpl committed May 10, 2021
1 parent a1dc2ba commit eaa2533
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions examples/WireMock.Net.Console.Net452.Classic/MainApp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public static void Run()
//},
PreWireMockMiddlewareInit = app => { System.Console.WriteLine($"PreWireMockMiddlewareInit : {app.GetType()}"); },
PostWireMockMiddlewareInit = app => { System.Console.WriteLine($"PostWireMockMiddlewareInit : {app.GetType()}"); },
AdditionalServiceRegistration = services => { System.Console.WriteLine($"AdditionalServiceRegistration : {services.GetType()}"); },
Logger = new WireMockConsoleLogger(),

HandlebarsRegistrationCallback = (handlebarsContext, fileSystemHandler) =>
Expand Down
2 changes: 2 additions & 0 deletions src/WireMock.Net/Owin/AspNetCoreSelfHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ public Task StartAsync()
services.AddSingleton<IMappingMatcher, MappingMatcher>();
services.AddSingleton<IOwinRequestMapper, OwinRequestMapper>();
services.AddSingleton<IOwinResponseMapper, OwinResponseMapper>();
_wireMockMiddlewareOptions.AdditionalServiceRegistration?.Invoke(services);
})
.Configure(appBuilder =>
{
Expand Down
5 changes: 5 additions & 0 deletions src/WireMock.Net/Owin/IWireMockMiddlewareOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Owin;
#else
using IAppBuilder = Microsoft.AspNetCore.Builder.IApplicationBuilder;
using Microsoft.Extensions.DependencyInjection;
#endif

namespace WireMock.Owin
Expand Down Expand Up @@ -36,6 +37,10 @@ internal interface IWireMockMiddlewareOptions

Action<IAppBuilder> PostWireMockMiddlewareInit { get; set; }

#if USE_ASPNETCORE
Action<IServiceCollection> AdditionalServiceRegistration { get; set; }
#endif

IFileSystemHandler FileSystemHandler { get; set; }

bool? AllowBodyForAllHttpMethods { get; set; }
Expand Down
5 changes: 5 additions & 0 deletions src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Owin;
#else
using IAppBuilder = Microsoft.AspNetCore.Builder.IApplicationBuilder;
using Microsoft.Extensions.DependencyInjection;
#endif

namespace WireMock.Owin
Expand Down Expand Up @@ -36,6 +37,10 @@ internal class WireMockMiddlewareOptions : IWireMockMiddlewareOptions

public Action<IAppBuilder> PostWireMockMiddlewareInit { get; set; }

#if USE_ASPNETCORE
public Action<IServiceCollection> AdditionalServiceRegistration { get; set; }
#endif

/// <inheritdoc cref="IWireMockMiddlewareOptions.FileSystemHandler"/>
public IFileSystemHandler FileSystemHandler { get; set; }

Expand Down
1 change: 1 addition & 0 deletions src/WireMock.Net/Server/WireMockServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ protected WireMockServer(IWireMockServerSettings settings)
_mappingToFileSaver = new MappingToFileSaver(_settings, _mappingConverter);

#if USE_ASPNETCORE
_options.AdditionalServiceRegistration = _settings.AdditionalServiceRegistration;
_httpServer = new AspNetCoreSelfHost(_options, urlOptions);
#else
_httpServer = new OwinSelfHost(_options, urlOptions);
Expand Down
11 changes: 11 additions & 0 deletions src/WireMock.Net/Settings/IWireMockServerSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
using WireMock.Handlers;
using WireMock.Logging;
using WireMock.Matchers;
#if USE_ASPNETCORE
using Microsoft.Extensions.DependencyInjection;
#endif

namespace WireMock.Settings
{
Expand Down Expand Up @@ -109,6 +112,14 @@ public interface IWireMockServerSettings
[PublicAPI]
Action<object> PostWireMockMiddlewareInit { get; set; }

#if USE_ASPNETCORE
/// <summary>
/// Action which is called with IServiceCollection when ASP.NET Core DI is being configured. [Optional]
/// </summary>
[PublicAPI]
Action<IServiceCollection> AdditionalServiceRegistration { get; set; }
#endif

/// <summary>
/// The IWireMockLogger which logs Debug, Info, Warning or Error
/// </summary>
Expand Down
10 changes: 10 additions & 0 deletions src/WireMock.Net/Settings/WireMockServerSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
using Newtonsoft.Json;
using WireMock.Handlers;
using WireMock.Logging;
#if USE_ASPNETCORE
using Microsoft.Extensions.DependencyInjection;
#endif

namespace WireMock.Settings
{
Expand Down Expand Up @@ -79,6 +82,13 @@ public class WireMockServerSettings : IWireMockServerSettings
[JsonIgnore]
public Action<object> PostWireMockMiddlewareInit { get; set; }

#if USE_ASPNETCORE
/// <inheritdoc cref="IWireMockServerSettings.AdditionalServiceRegistration"/>
[PublicAPI]
[JsonIgnore]
public Action<IServiceCollection> AdditionalServiceRegistration { get; set; }
#endif

/// <inheritdoc cref="IWireMockServerSettings.Logger"/>
[PublicAPI]
[JsonIgnore]
Expand Down

0 comments on commit eaa2533

Please sign in to comment.