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)); } } }
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; }
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); } }