namespace BinaryDad.Notes.Services { public class FileNoteService : INoteService { private readonly string? defaultFileName; private readonly string? filePath; public FileNoteService(IConfiguration configuration) { defaultFileName = configuration["DefaultContentFileName"].Trim().ToLower(); filePath = configuration["ContentFilePath"].Trim(); CheckFile(defaultFileName); } public string Get(string? noteName) { CheckFile(noteName); return File.ReadAllText(GetFilePath(noteName)); } public ICollection GetNoteNames() { return Directory.GetFiles(filePath); } public void Save(string content, string? noteName) { File.WriteAllText(GetFilePath(noteName), content); } private void CheckFile(string noteName) { var filePath = GetFilePath(noteName); // ensure initialized if (!File.Exists(filePath)) { Save("Hi! Feel free to start typing. Everything will be saved soon after you are done typing.", noteName); } } private string GetFilePath(string? noteName) { noteName = string.IsNullOrWhiteSpace(noteName) ? defaultFileName : noteName; noteName = noteName.Trim().ToLower(); return Path.Combine(filePath, noteName); } } }