namespace BinaryDad.Notes.Services { public class FileNoteService : INoteService { private readonly string filePath; private static readonly string defaultFilePath = "notes"; public FileNoteService(IConfiguration configuration) { filePath = configuration["FileNoteService:ContentFilePath"]; if (string.IsNullOrWhiteSpace(filePath)) { filePath = defaultFilePath; } } public string GetText(string noteName) { CheckFile(noteName); return File.ReadAllText(GetFilePath(noteName)); } public ICollection GetNoteNames() { return Directory.GetFiles(filePath) .Select(f => Path.GetFileName(f)) .ToList(); } public void SaveText(string content, string noteName) { File.WriteAllText(GetFilePath(noteName), content); } public void DeleteNote(string noteName) { var filePath = GetFilePath(noteName); File.Delete(filePath); } private void CheckFile(string noteName) { var filePath = GetFilePath(noteName); // ensure initialized if (!File.Exists(filePath)) { SaveText("Hi! Feel free to start typing. Everything will be saved soon after you are done typing.", noteName); } } private string GetFilePath(string noteName) { noteName = noteName.Trim().ToLower(); return Path.Combine(filePath, noteName); } } }