Example #1
0
        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;
        }
Example #3
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        //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 })