using System.Linq; using System.Reflection; using JetBrains.Annotations; using WireMock.Logging; using WireMock.Server; using WireMock.Settings; using Stef.Validation; namespace WireMock.Net.StandAlone { /// /// The StandAloneApp /// public static class StandAloneApp { private static readonly string Version = typeof(StandAloneApp).GetTypeInfo().Assembly.GetName().Version.ToString(); /// /// Start WireMock.Net standalone Server based on the WireMockServerSettings. /// /// The WireMockServerSettings [PublicAPI] public static WireMockServer Start([NotNull] WireMockServerSettings settings) { Guard.NotNull(settings, nameof(settings)); var server = WireMockServer.Start(settings); settings.Logger?.Info("Version [{0}]", Version); settings.Logger?.Info("Server listening at {0}", string.Join(",", server.Urls)); return server; } /// /// Start WireMock.Net standalone Server based on the commandline arguments. /// /// The commandline arguments /// The logger [PublicAPI] public static WireMockServer Start([NotNull] string[] args, [CanBeNull] IWireMockLogger logger = null) { Guard.NotNull(args, nameof(args)); if (WireMockServerSettingsParser.TryParseArguments(args, out var settings, logger)) { settings.Logger?.Info("Version [{0}]", Version); settings.Logger?.Debug("Server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'"))); return Start(settings); } return null; } /// /// Try to start WireMock.Net standalone Server based on the commandline arguments. /// /// The commandline arguments /// The logger /// The WireMockServer [PublicAPI] public static bool TryStart([NotNull] string[] args, out WireMockServer server, [CanBeNull] IWireMockLogger logger = null) { Guard.NotNull(args, nameof(args)); if (WireMockServerSettingsParser.TryParseArguments(args, out var settings, logger)) { settings.Logger?.Info("Version [{0}]", Version); settings.Logger?.Debug("Server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'"))); server = Start(settings); return true; } server = null; return false; } } }