mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-01-18 09:27:08 +01:00
* Implement PrefixForSavedMappingFile * Add missing new line * Add missing new line * Fix warning * Fix typo * Change from readonly to const * Assign default value * Use nameof() * Change from readonly to const * Update tests * Update failing test * Rename settingsMock to settings * Create public const * Use const from ProxyAndRecordSettings --------- Co-authored-by: Mindaugas Laganeckas <mindaugas.laganeckas@nexigroup.com>
59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using System.IO;
|
|
using System.Linq;
|
|
using Newtonsoft.Json;
|
|
using Stef.Validation;
|
|
using WireMock.Settings;
|
|
|
|
namespace WireMock.Serialization;
|
|
|
|
internal class MappingToFileSaver
|
|
{
|
|
private readonly WireMockServerSettings _settings;
|
|
private readonly MappingConverter _mappingConverter;
|
|
private readonly MappingFileNameSanitizer _fileNameSanitizer;
|
|
|
|
public MappingToFileSaver(WireMockServerSettings settings, MappingConverter mappingConverter)
|
|
{
|
|
_settings = Guard.NotNull(settings);
|
|
_mappingConverter = Guard.NotNull(mappingConverter);
|
|
_fileNameSanitizer = new MappingFileNameSanitizer(settings);
|
|
}
|
|
|
|
public void SaveMappingsToFile(IMapping[] mappings, string? folder = null)
|
|
{
|
|
folder ??= _settings.FileSystemHandler.GetMappingFolder();
|
|
|
|
if (!_settings.FileSystemHandler.FolderExists(folder))
|
|
{
|
|
_settings.FileSystemHandler.CreateFolder(folder);
|
|
}
|
|
|
|
var models = mappings.Select(_mappingConverter.ToMappingModel).ToArray();
|
|
|
|
Save(models, folder);
|
|
}
|
|
|
|
public void SaveMappingToFile(IMapping mapping, string? folder = null)
|
|
{
|
|
folder ??= _settings.FileSystemHandler.GetMappingFolder();
|
|
|
|
if (!_settings.FileSystemHandler.FolderExists(folder))
|
|
{
|
|
_settings.FileSystemHandler.CreateFolder(folder);
|
|
}
|
|
|
|
var model = _mappingConverter.ToMappingModel(mapping);
|
|
|
|
var filename = _fileNameSanitizer.BuildSanitizedFileName(mapping);
|
|
var path = Path.Combine(folder, filename);
|
|
|
|
Save(model, path);
|
|
}
|
|
|
|
private void Save(object value, string path)
|
|
{
|
|
_settings.Logger.Info("Saving Mapping file {0}", path);
|
|
|
|
_settings.FileSystemHandler.WriteMappingFile(path, JsonConvert.SerializeObject(value, JsonSerializationConstants.JsonSerializerSettingsDefault));
|
|
}
|
|
} |