// Copyright © WireMock.Net using System.Collections.Generic; using System.IO; using WireMock.Handlers; namespace WireMock.Net.ConsoleApplication { internal class CustomFileSystemFileHandler : IFileSystemHandler { private static readonly string AdminMappingsFolder = Path.Combine("__admin", "mappings"); private static readonly string UnmatchedRequestsFolder = Path.Combine("requests", "unmatched"); /// public bool FolderExists(string path) { return Directory.Exists(path); } /// public void CreateFolder(string path) { Directory.CreateDirectory(path); } /// public IEnumerable EnumerateFiles(string path, bool includeSubdirectories) { return includeSubdirectories ? Directory.EnumerateFiles(path, "*", SearchOption.AllDirectories) : Directory.EnumerateFiles(path); } /// public string GetMappingFolder() { return Path.Combine(@"c:\temp-wiremock", AdminMappingsFolder); } /// public string ReadMappingFile(string path) { return File.ReadAllText(path); } /// public void WriteMappingFile(string path, string text) { File.WriteAllText(path, text); } /// public byte[] ReadResponseBodyAsFile(string path) { return File.ReadAllBytes(Path.GetFileName(path) == path ? Path.Combine(GetMappingFolder(), path) : path); } /// public string ReadResponseBodyAsString(string path) { return File.ReadAllText(Path.GetFileName(path) == path ? Path.Combine(GetMappingFolder(), path) : path); } /// public bool FileExists(string path) { return File.Exists(AdjustPath(path)); } /// public void WriteFile(string path, byte[] bytes) { File.WriteAllBytes(AdjustPath(path), bytes); } public void WriteFile(string folder, string filename, byte[] bytes) { File.WriteAllBytes(Path.Combine(folder, filename), bytes); } /// public void DeleteFile(string path) { File.Delete(AdjustPath(path)); } /// public byte[] ReadFile(string path) { return File.ReadAllBytes(AdjustPath(path)); } /// public string ReadFileAsString(string path) { return File.ReadAllText(path); } /// public string GetUnmatchedRequestsFolder() { return Path.Combine(@"c:\temp-wiremock", UnmatchedRequestsFolder); } /// public void WriteUnmatchedRequest(string filename, string text) { var folder = GetUnmatchedRequestsFolder(); Directory.CreateDirectory(folder); File.WriteAllText(Path.Combine(folder, filename), text); } /// /// Adjusts the path to the MappingFolder. /// /// The path. /// Adjusted path private string AdjustPath(string path) { return Path.Combine(GetMappingFolder(), path); } } }