using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using HandlebarsDotNet;
using JetBrains.Annotations;
using Newtonsoft.Json;
using WireMock.Admin.Mappings;
using WireMock.Handlers;
using WireMock.Logging;
using WireMock.Matchers;
using WireMock.RegularExpressions;
using WireMock.Types;
using System.Globalization;
#if USE_ASPNETCORE
using Microsoft.Extensions.DependencyInjection;
#endif
namespace WireMock.Settings;
///
/// WireMockServerSettings
///
public class WireMockServerSettings
{
///
/// Gets or sets the http port.
///
[PublicAPI]
public int? Port { get; set; }
///
/// Gets or sets the use SSL.
///
// ReSharper disable once InconsistentNaming
[PublicAPI]
public bool? UseSSL { get; set; }
///
/// Defines on which scheme (http/https) to host. (This overrides the UseSSL value).
///
[PublicAPI]
public HostingScheme? HostingScheme { get; set; }
///
/// Gets or sets whether to start admin interface.
///
[PublicAPI]
public bool? StartAdminInterface { get; set; }
///
/// Gets or sets if the static mappings should be read at startup.
///
[PublicAPI]
public bool? ReadStaticMappings { get; set; }
///
/// Watch the static mapping files + folder for changes when running.
///
[PublicAPI]
public bool? WatchStaticMappings { get; set; }
///
/// A value indicating whether subdirectories within the static mappings path should be monitored.
///
[PublicAPI]
public bool? WatchStaticMappingsInSubdirectories { get; set; }
///
/// Gets or sets if the proxy and record settings.
///
[PublicAPI]
public ProxyAndRecordSettings? ProxyAndRecordSettings { get; set; }
///
/// Gets or sets the urls.
///
[PublicAPI]
public string[]? Urls { get; set; }
///
/// StartTimeout
///
[PublicAPI]
public int StartTimeout { get; set; } = 10000;
///
/// Allow Partial Mapping (default set to false).
///
[PublicAPI]
public bool? AllowPartialMapping { get; set; }
///
/// The username needed for __admin access.
///
[PublicAPI]
public string? AdminUsername { get; set; }
///
/// The password needed for __admin access.
///
[PublicAPI]
public string? AdminPassword { get; set; }
///
/// The AzureAD Tenant needed for __admin access.
///
[PublicAPI]
public string? AdminAzureADTenant { get; set; }
///
/// The AzureAD Audience / Resource for __admin access.
///
[PublicAPI]
public string? AdminAzureADAudience { get; set; }
///
/// The RequestLog expiration in hours (optional).
///
[PublicAPI]
public int? RequestLogExpirationDuration { get; set; }
///
/// The MaxRequestLog count (optional).
///
[PublicAPI]
public int? MaxRequestLogCount { get; set; }
///
/// Action which is called (with the IAppBuilder or IApplicationBuilder) before the internal WireMockMiddleware is initialized. [Optional]
///
[PublicAPI]
[JsonIgnore]
public Action