// Copyright © WireMock.Net using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Http; using Stef.Validation; using WireMock.Net.AspNetCore.Middleware.HttpDelegatingHandler; using WireMock.Server; using WireMock.Settings; namespace WireMock.Net.AspNetCore.Middleware; /// /// Extension methods for . /// public static class ServiceCollectionExtensions { /// /// Adds all the components necessary to run WireMock.Net as a background service. /// public static IServiceCollection AddWireMockService( this IServiceCollection services, Action configure, bool alwaysRedirectToWireMock = true, WireMockServerSettings? settings = null ) { Guard.NotNull(services); Guard.NotNull(configure); services.AddTransient(); services.AddSingleton(new WireMockServerInstance(configure, settings)); services.AddSingleton(new WireMockDelegationHandlerSettings { AlwaysRedirect = alwaysRedirectToWireMock }); services.AddHostedService(); services.AddHttpClient(); services.AddHttpContextAccessor(); services.ConfigureAll(options => { options.HttpMessageHandlerBuilderActions.Add(builder => { builder.AdditionalHandlers.Add(builder.Services.GetRequiredService()); }); }); return services; } }