public static void UpdateMeta(PlaylistMeta meta, IReadOnlyPlaylist list) { meta.Title = list.Title; meta.Count = list.Items.Count; meta.OwnerId = list.Owner.Value; meta.Version = FileVersion; meta.AdditionalEditors = new List <string>(list.AdditionalEditors.Select(uid => uid.Value)); }
public E <LocalStr> Write(string listId, IReadOnlyPlaylist list) { try { rwLock.EnterWriteLock(); var result = WriteToFile(listId, list); dirtyList.Remove(listId); return(result); } finally { rwLock.ExitWriteLock(); } }
private E <LocalStr> WriteToFile(string listId, IReadOnlyPlaylist plist) { var fi = NameToFile(listId); if (fi is null) { return(new LocalStr(strings.error_playlist_no_store_directory)); } var dir = fi.Directory; if (!dir.Exists) { dir.Create(); } using (var sw = new StreamWriter(fi.Open(FileMode.Create, FileAccess.Write, FileShare.Read), Tools.Utf8Encoder)) { var serializer = new JsonSerializer { Formatting = Formatting.None, }; var meta = playlistInfo.GetOrNew(listId); meta.Title = plist.Title; meta.Count = plist.Items.Count; meta.Version = FileVersion; sw.WriteLine("version:" + FileVersion); sw.Write("meta:"); serializer.Serialize(sw, meta); sw.WriteLine(); sw.WriteLine(); foreach (var pli in plist.Items) { sw.Write("rsj:"); serializer.Serialize(sw, pli.AudioResource); sw.WriteLine(); } } return(R.Ok); }
private E <LocalStr> WriteToFile(string listId, IReadOnlyPlaylist plist) { var fi = NameToFile(listId); var dir = fi.Directory; if (!dir.Exists) { dir.Create(); } using (var sw = new StreamWriter(fi.Open(FileMode.Create, FileAccess.Write, FileShare.Read), Util.Utf8Encoder)) { var serializer = new JsonSerializer { Formatting = Formatting.None, }; if (!playlistInfo.TryGetValue(listId, out var meta)) { meta = new PlaylistMeta { }; playlistInfo.Add(listId, meta); } meta.Title = plist.Title; meta.Count = plist.Items.Count; meta.Version = FileVersion; sw.WriteLine("version:" + FileVersion); sw.Write("meta:"); serializer.Serialize(sw, meta); sw.WriteLine(); sw.WriteLine(); foreach (var pli in plist.Items) { sw.Write("rsj:"); serializer.Serialize(sw, pli.Resource); sw.WriteLine(); } } return(R.Ok); }