// Copyright © WireMock.Net
using Stef.Validation;
using WireMock.Server;
using WireMock.Settings;
namespace WireMock.Net.AspNetCore.Middleware;
///
/// WireMockServer Instance object
///
internal class WireMockServerInstance
{
private readonly Action _configureAction;
private readonly WireMockServerSettings? _settings;
///
/// Creates a new instance and provides ability to add configuration
/// for the start method of
///
public WireMockServerInstance(Action configure, WireMockServerSettings? settings = null)
{
_configureAction = Guard.NotNull(configure);
_settings = settings;
}
///
/// Instance accessor for the
///
public WireMockServer? Instance { get; private set; }
///
/// Configures and starts instance for use.
///
public void Start()
{
Instance = _settings != null ? WireMockServer.Start(_settings) : WireMockServer.Start();
_configureAction.Invoke(Instance);
}
///
/// Stops the
///
public void Stop()
{
Instance?.Stop();
}
}