diff --git a/src/WireMock.Net.StandAlone/CommandLineArguments.cs b/src/WireMock.Net.StandAlone/CommandLineArguments.cs
new file mode 100644
index 00000000..f78f74ca
--- /dev/null
+++ b/src/WireMock.Net.StandAlone/CommandLineArguments.cs
@@ -0,0 +1,32 @@
+using CommandLineParser.Arguments;
+
+namespace WireMock.Net.StandAlone
+{
+ public class CommandLineArguments
+ {
+ [ValueArgument(typeof(bool), "StartAdminInterface", DefaultValue = true, Description = "Start the AdminInterface")]
+ public bool StartAdminInterface { get; set; }
+
+ [ValueArgument(typeof(bool), "ReadStaticMappings", DefaultValue = false, Description = "Read StaticMappings")]
+ public bool ReadStaticMappings { get; set; }
+
+ [ValueArgument(typeof(bool), 'w', "WatchStaticMappings", DefaultValue = false, Description = "Watch the static mapping files + folder for changes when running.")]
+ public bool WatchStaticMappings { get; set; }
+
+ [ValueArgument(typeof(bool), 'm', "AllowPartialMapping", DefaultValue = false, Description = "Allow PartialMapping")]
+ public bool AllowPartialMapping { get; set; }
+
+ [ValueArgument(typeof(string), 'u', "AdminUsername", Description = "The username needed for __admin access.")]
+ public string AdminUsername { get; set; }
+
+ [ValueArgument(typeof(string), 'p', "AdminPassword", Description = "The password needed for __admin access.")]
+ public string AdminPassword { get; set; }
+
+
+ [BoundedValueArgument(typeof(int), 'o', "MaxRequestLogCount", MinValue = 0, Description = "The Maximum number of RequestLogs to keep")]
+ public int MaxRequestLogCount { get; set; }
+
+ [BoundedValueArgument(typeof(int), 'x', "RequestLogExpirationDuration", MinValue = 0, Description = "The RequestLog Expiration Duration in hours")]
+ public int RequestLogExpirationDuration { get; set; }
+ }
+}
diff --git a/src/WireMock.Net.StandAlone/StandAloneApp.cs b/src/WireMock.Net.StandAlone/StandAloneApp.cs
index 916fb74b..cd1040d9 100644
--- a/src/WireMock.Net.StandAlone/StandAloneApp.cs
+++ b/src/WireMock.Net.StandAlone/StandAloneApp.cs
@@ -38,8 +38,9 @@ namespace WireMock.Net.StandAlone
{
Check.NotNull(args, nameof(args));
- var parser = new SimpleCommandLineParser();
- parser.Parse(args);
+ var parser = new CommandLineParser.CommandLineParser();
+ var p = new CommandLineArguments();
+ parser.ExtractArgumentAttributes(p);
var settings = new FluentMockServerSettings
{
diff --git a/src/WireMock.Net.StandAlone/WireMock.Net.StandAlone.csproj b/src/WireMock.Net.StandAlone/WireMock.Net.StandAlone.csproj
index f6667cc3..56f99f1b 100644
--- a/src/WireMock.Net.StandAlone/WireMock.Net.StandAlone.csproj
+++ b/src/WireMock.Net.StandAlone/WireMock.Net.StandAlone.csproj
@@ -41,6 +41,11 @@
+
+
+
+
+
All
diff --git a/src/WireMock.Net/Serialization/MappingConverter.cs b/src/WireMock.Net/Serialization/MappingConverter.cs
index 46b5af01..00b4d60c 100644
--- a/src/WireMock.Net/Serialization/MappingConverter.cs
+++ b/src/WireMock.Net/Serialization/MappingConverter.cs
@@ -102,44 +102,49 @@ namespace WireMock.Serialization
mappingModel.Response.Headers = Map(response.ResponseMessage.Headers);
mappingModel.Response.UseTransformer = response.UseTransformer;
- if (response.ResponseMessage.BodyData != null)
- {
- switch (response.ResponseMessage.BodyData?.DetectedBodyType)
- {
- case BodyType.String:
- mappingModel.Response.Body = response.ResponseMessage.BodyData.BodyAsString;
- break;
-
- case BodyType.Json:
- mappingModel.Response.BodyAsJson = response.ResponseMessage.BodyData.BodyAsJson;
- mappingModel.Response.BodyAsJsonIndented = response.ResponseMessage.BodyData.BodyAsJsonIndented;
- break;
-
- case BodyType.Bytes:
- mappingModel.Response.BodyAsBytes = response.ResponseMessage.BodyData.BodyAsBytes;
- break;
-
- case BodyType.File:
- mappingModel.Response.BodyAsFile = response.ResponseMessage.BodyData.BodyAsFile;
- mappingModel.Response.BodyAsFileIsCached = response.ResponseMessage.BodyData.BodyAsFileIsCached;
- break;
- }
-
- if (response.ResponseMessage.BodyData.Encoding != null && response.ResponseMessage.BodyData.Encoding.WebName != "utf-8")
- {
- mappingModel.Response.BodyEncoding = new EncodingModel
- {
- EncodingName = response.ResponseMessage.BodyData.Encoding.EncodingName,
- CodePage = response.ResponseMessage.BodyData.Encoding.CodePage,
- WebName = response.ResponseMessage.BodyData.Encoding.WebName
- };
- }
- }
+ MapBodyData(response, mappingModel);
}
return mappingModel;
}
+ private static void MapBodyData(Response response, MappingModel mappingModel)
+ {
+ if (response.ResponseMessage.BodyData != null)
+ {
+ switch (response.ResponseMessage.BodyData?.DetectedBodyType)
+ {
+ case BodyType.String:
+ mappingModel.Response.Body = response.ResponseMessage.BodyData.BodyAsString;
+ break;
+
+ case BodyType.Json:
+ mappingModel.Response.BodyAsJson = response.ResponseMessage.BodyData.BodyAsJson;
+ mappingModel.Response.BodyAsJsonIndented = response.ResponseMessage.BodyData.BodyAsJsonIndented;
+ break;
+
+ case BodyType.Bytes:
+ mappingModel.Response.BodyAsBytes = response.ResponseMessage.BodyData.BodyAsBytes;
+ break;
+
+ case BodyType.File:
+ mappingModel.Response.BodyAsFile = response.ResponseMessage.BodyData.BodyAsFile;
+ mappingModel.Response.BodyAsFileIsCached = response.ResponseMessage.BodyData.BodyAsFileIsCached;
+ break;
+ }
+
+ if (response.ResponseMessage.BodyData.Encoding != null && response.ResponseMessage.BodyData.Encoding.WebName != "utf-8")
+ {
+ mappingModel.Response.BodyEncoding = new EncodingModel
+ {
+ EncodingName = response.ResponseMessage.BodyData.Encoding.EncodingName,
+ CodePage = response.ResponseMessage.BodyData.Encoding.CodePage,
+ WebName = response.ResponseMessage.BodyData.Encoding.WebName
+ };
+ }
+ }
+ }
+
private static IDictionary Map(IDictionary> dictionary)
{
if (dictionary == null || dictionary.Count == 0)