using System; using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; using Tesses.VirtualFilesystem; using Zio; namespace TessesDedup { public class FilesystemEntry { [JsonProperty("name")] public string Name {get;set;}=""; [JsonProperty("type")] [JsonConverter(typeof(StringEnumConverter),typeof(CamelCaseNamingStrategy))] public FilesystemEntryType Type {get;set;} = FilesystemEntryType.Dir; [JsonProperty("entries")] public List Entries {get;set;}=new List(); [JsonProperty("hashes")] public List Hashes {get;set;}=new List(); [JsonProperty("length")] public long Length {get;set;} [JsonProperty("points_to")] public string PointsTo {get;set;} public FilesystemEntry WithoutHashes() { if(Type == FilesystemEntryType.Dir) { FilesystemEntry ent=new FilesystemEntry(); ent.Name = Name; ent.Type = FilesystemEntryType.Dir; foreach(var item in Entries) { ent.Entries.Add(item.WithoutHashes()); } return ent; } else if(Type == FilesystemEntryType.File) { FilesystemEntry ent=new FilesystemEntry(); ent.Length = Length; ent.Name = Name; ent.Type = FilesystemEntryType.File; return ent; } return this; } } public enum FilesystemEntryType { Dir, File, Symlink } }