Esempio n. 1
0
 internal void BackupFile(MegaNodeHelper node, int version = 0)
 {
     if (node == null) { return; }
     var newPath = node.Path + ".remote" + (version > 0 ? version.ToString() : "");
     var found = FindNodePyPath(newPath);
     if (found != null)
     {
         BackupFile(node, ++version);
     }
     else
     {
         node.Node.Attributes.Name += ".remote" + (version > 0 ? version.ToString() : "");
         try
         {
             api.UpdateNodeAttrSync(node.Node);
         }
         catch(MegaApiException e)
         {
             throw new ApplicationException(String.Format("Error when backuping {0}. Error: {1}", node.Path, e));
         }
     }
 }
Esempio n. 2
0
        private List<MegaNodeHelper> GetFilesAndDirectories()
        {
            serverNodes = new List<MegaNodeHelper>();
            List<MegaNode> nodes = null;

            try
            {
                nodes = api.GetNodesSync();
            }
            catch (MegaApiException e)
            {
                throw new ApplicationException(String.Format("Could not get the list of nodes. Error: {0}", e));
            }
            // todo ignore sync folder in the trash
            var rootNode = nodes.Where(n => n.Attributes.Name == rootFolderName).FirstOrDefault();
            if (rootNode == null)
            {
                try
                {
                    rootNode = api.CreateFolderSync(nodes.Where(n => n.Type == MegaNodeType.RootFolder).First().Id, rootFolderName);
                }
                catch (MegaApiException e)
                {
                    throw new ApplicationException(String.Format("Could create the sync folder. Error: {0}", e));
                }
            }
            rootFolder = new MegaNodeHelper { Node = rootNode };
            AddChildren(serverNodes, rootFolder, nodes);
            return serverNodes;
        }
Esempio n. 3
0
 private void AddChildren(List<MegaNodeHelper> target, MegaNodeHelper parent, List<MegaNode> serverNodes, bool r = false)
 {
     var children = serverNodes.Where(n=>n.ParentId == parent.Node.Id);
     foreach (var child in children)
     {
         var c = new MegaNodeHelper
         {
             Node = child,
             // do not set the root folder as parent
             Parent = r ? parent : null
         };
         target.Add(c);
         AddChildren(target, c, serverNodes, true);
     }
 }