public async Task <IEntry> FolderInfo(RemotePath path, int offset = 0, int limit = int.MaxValue, int depth = 1) { if (path.IsLink) { throw new NotImplementedException(nameof(FolderInfo)); } var req = new ListRequest(HttpSettings, Authent, _metaServer.Value.Url, path.Path, _listDepth); var res = await req.MakeRequestAsync(); switch (res.Item) { case FsFolder fsFolder: { var f = new Folder(fsFolder.Size == null ? 0 : (long)fsFolder.Size.Value, fsFolder.FullPath); foreach (var fsi in fsFolder.Items) { if (fsi is FsFile fsfi) { var fi = new File(fsfi.FullPath, (long)fsfi.Size, new FileHashMrc(fsfi.Sha1)) { CreationTimeUtc = fsfi.ModifDate, LastWriteTimeUtc = fsfi.ModifDate }; f.Files.Add(fi); } else if (fsi is FsFolder fsfo) { var fo = new Folder(fsfo.Size == null ? 0 : (long)fsfo.Size.Value, fsfo.FullPath); f.Folders.Add(fo); } else { throw new Exception($"Unknown item type {fsi.GetType()}"); } } return(f); } case FsFile fsFile: { var fi = new File(fsFile.FullPath, (long)fsFile.Size, new FileHashMrc(fsFile.Sha1)) { CreationTimeUtc = fsFile.ModifDate, LastWriteTimeUtc = fsFile.ModifDate }; return(fi); } default: return(null); } }
public async Task <IEntry> FolderInfo(string path, Link ulink, int offset = 0, int limit = Int32.MaxValue) { var req = new ListRequest(HttpSettings, Authent, _metaServer.Value.Url, path) { Depth = 1 }; var res = await req.MakeRequestAsync(); if (res.Item is FsFolder fsf) { var f = new Folder(fsf.Size == null ? 0 : (long)fsf.Size.Value, fsf.FullPath); foreach (var fsi in fsf.Items) { if (fsi is FsFile fsfi) { var fi = new File(fsfi.FullPath, (long)fsfi.Size, fsfi.Sha1.ToHexString()) { CreationTimeUtc = fsfi.ModifDate, LastWriteTimeUtc = fsfi.ModifDate, }; f.Files.Add(fi); } else if (fsi is FsFolder fsfo) { var fo = new Folder(fsfo.Size == null ? 0 : (long)fsfo.Size.Value, fsfo.FullPath); f.Folders.Add(fo); } else { throw new Exception($"Unknown item type {fsi.GetType()}"); } } return(f); } if (res.Item is FsFile fsfi1) { var fi = new File(fsfi1.FullPath, (long)fsfi1.Size, fsfi1.Sha1.ToHexString()) { CreationTimeUtc = fsfi1.ModifDate, LastWriteTimeUtc = fsfi1.ModifDate, }; return(fi); } return(null); }