using System.IO; using System.Threading.Tasks; using ErsatzTV.Core; using ErsatzTV.Core.Emby; using ErsatzTV.Core.Interfaces.Emby; using LanguageExt; using Newtonsoft.Json; using static LanguageExt.Prelude; namespace ErsatzTV.Infrastructure.Emby { public class EmbySecretStore : IEmbySecretStore { public Task DeleteAll() => SaveSecrets(new EmbySecrets()); public Task ReadSecrets() => File.ReadAllTextAsync(FileSystemLayout.EmbySecretsPath) .Map(JsonConvert.DeserializeObject) .Map(s => Optional(s).IfNone(new EmbySecrets())); public Task SaveSecrets(EmbySecrets embySecrets) => Some(JsonConvert.SerializeObject(embySecrets)).Match( s => File.WriteAllTextAsync(FileSystemLayout.EmbySecretsPath, s).ToUnit(), Task.FromResult(Unit.Default)); } }