public static IEntry ToEntry(this FolderInfoResult data, Link ulink, string origPath) { MailRuCloud.ItemType itemType; if (null == ulink) { itemType = data.body.home == origPath ? MailRuCloud.ItemType.Folder : MailRuCloud.ItemType.File; } else { itemType = ulink.ItemType; } var entry = itemType == MailRuCloud.ItemType.File ? (IEntry)data.ToFile( home: WebDavPath.Parent(origPath), ulink: ulink, filename: ulink == null ? WebDavPath.Name(origPath) : ulink.OriginalName, nameReplacement: WebDavPath.Name(origPath)) : data.ToFolder(origPath, ulink); return(entry); }
/// <summary> /// When it's a linked item, need to shift paths /// </summary> /// <param name="data"></param> /// <param name="home"></param> /// <param name="link"></param> private static void PatchEntryPath(FolderInfoResult data, string home, Link link) { if (string.IsNullOrEmpty(home) || null == link) return; foreach (var propse in data.body.list) { string name = link.OriginalName == propse.name ? link.Name : propse.name; propse.home = WebDavPath.Combine(home, name); propse.name = name; } data.body.home = home; }
public static Folder ToFolder(this FolderInfoResult data, string home = null, Link link = null) { PatchEntryPath(data, home, link); var folder = new Folder(data.body.size, data.body.home ?? data.body.name) { Folders = data.body.list? .Where(it => FolderKinds.Contains(it.kind)) .Select(item => item.ToFolder()) .ToList(), Files = data.body.list? .Where(it => it.kind == "file") .Select(item => item.ToFile()) .ToGroupedFiles() .ToList() }; return(folder); }
public static Folder ToFolder(this FolderInfoResult data, string home = null, Link link = null) { PatchEntryPath(data, home, link); var folder = new Folder(data.Body.Size, data.Body.Home ?? data.Body.Name, data.Body.Weblink) { Folders = data.Body.List? .Where(it => FolderKinds.Contains(it.Kind)) .Select(item => item.ToFolder()) .ToList(), Files = data.Body.List? .Where(it => it.Kind == "file") .Select(item => item.ToFile()) .ToGroupedFiles() .ToList(), IsChildsLoaded = true }; return(folder); }
public static File ToFile(this FolderInfoResult data, string home = null, Link ulink = null, string filename = null, string nameReplacement = null) { if (string.IsNullOrEmpty(filename)) { return(new File(WebDavPath.Combine(data.body.home ?? "", data.body.name), data.body.size)); } PatchEntryPath(data, home, ulink); var z = data.body.list? .Where(it => it.kind == "file") .Select(it => filename != null && it.name == filename ? it.ToFile(nameReplacement) : it.ToFile()) .ToList(); var groupedFile = z.ToGroupedFiles() .First(it => it.Name == (string.IsNullOrEmpty(nameReplacement) ? filename : nameReplacement)); return(groupedFile); }
public static Folder ToFolder(this FolderInfoResult data, string publicBaseUrl, string home = null, Link link = null) { PatchEntryPath(data, home, link); var folder = new Folder(data.Body.Size, data.Body.Home ?? data.Body.Name, data.Body.Weblink.ToPublicLinkInfos(publicBaseUrl)) { ServerFoldersCount = data.Body.Count?.Folders, ServerFilesCount = data.Body.Count?.Files, Folders = data.Body.List? .Where(it => FolderKinds.Contains(it.Kind)) .Select(item => item.ToFolder(publicBaseUrl)) .ToList(), Files = data.Body.List? .Where(it => it.Kind == "file") .Select(item => item.ToFile(publicBaseUrl, "")) .ToGroupedFiles() .ToList(), IsChildsLoaded = true }; return(folder); }
public static IEntry ToEntry(this FolderInfoResult data) { if (data.body.kind == "file") { var file = data.ToFile(); return(file); } var folder = new Folder(data.body.size, WebDavPath.Combine(data.body.home ?? WebDavPath.Root, data.body.name)) { Folders = data.body.list? .Where(it => FolderKinds.Contains(it.kind)) .Select(item => item.ToFolder()) .ToList(), Files = data.body.list? .Where(it => it.kind == "file") .Select(item => item.ToFile()) .ToGroupedFiles() .ToList() }; return(folder); }
//TODO: subject to heavily refact public static File ToFile(this FolderInfoResult data, string home = null, Link ulink = null, string filename = null, string nameReplacement = null) { if (ulink == null || ulink.IsLinkedToFileSystem) { if (string.IsNullOrEmpty(filename)) { return(new File(WebDavPath.Combine(data.Body.Home ?? "", data.Body.Name), data.Body.Size)); } } PatchEntryPath(data, home, ulink); var z = data.Body.List? .Where(it => it.Kind == "file") .Select(it => filename != null && it.Name == filename ? it.ToFile(nameReplacement) : it.ToFile()) .ToList(); var cmpname = string.IsNullOrEmpty(nameReplacement) ? filename : nameReplacement; if (string.IsNullOrEmpty(cmpname) && data.Body.Weblink != "/" && ulink != null && !ulink.IsLinkedToFileSystem) { cmpname = WebDavPath.Name(ulink.PublicLink); } var groupedFile = z? .ToGroupedFiles(); var res = groupedFile.First(it => string.IsNullOrEmpty(cmpname) || it.Name == cmpname); return(res); }
public static IEntry ToEntry(this FolderInfoResult data, string publicBaseUrl) { if (data.Body.Kind == "file") { var file = data.ToFile(publicBaseUrl); return(file); } var folder = new Folder(data.Body.Size, WebDavPath.Combine(data.Body.Home ?? WebDavPath.Root, data.Body.Name)) { Folders = data.Body.List? .Where(it => FolderKinds.Contains(it.Kind)) .Select(item => item.ToFolder(publicBaseUrl)) .ToList(), Files = data.Body.List? .Where(it => it.Kind == "file") .Select(item => item.ToFile(publicBaseUrl, "")) .ToGroupedFiles() .ToList() }; return(folder); }
//TODO: subject to heavily refact public static File ToFile(this FolderInfoResult data, string publicBaseUrl, string home = null, Link ulink = null, string filename = null, string nameReplacement = null) { if (ulink == null || ulink.IsLinkedToFileSystem) { if (string.IsNullOrEmpty(filename)) { return(new File(WebDavPath.Combine(data.Body.Home ?? "", data.Body.Name), data.Body.Size)); } } PatchEntryPath(data, home, ulink); var z = data.Body.List? .Where(it => it.Kind == "file") .Select(it => filename != null && it.Name == filename ? it.ToFile(publicBaseUrl, nameReplacement) : it.ToFile(publicBaseUrl, "")) .ToList(); var cmpname = string.IsNullOrEmpty(nameReplacement) ? filename : nameReplacement; if (string.IsNullOrEmpty(cmpname) && data.Body.Weblink != "/" && ulink is { IsLinkedToFileSystem : false })