public static void AutoCreateFolder(ExplorerNode node) { List <ExplorerNode> list = node.GetFullPath(); if (list[0].NodeType.Type != CloudType.Mega) { throw new Exception("Mega only."); } MegaApiClient client = GetClient(list[0].NodeType.Email); list.RemoveAt(0); foreach (ExplorerNode child in list) { if (string.IsNullOrEmpty(child.Info.ID)) { MegaNzNode m_p_node = new MegaNzNode(child.Parent.Info.ID); INode c_node = client.GetNodes(m_p_node).Where(n => n.Name == child.Info.Name).First();//find if (c_node == null) { c_node = client.CreateFolder(child.Info.Name, m_p_node); //if not found -> create } child.Info.ID = c_node.Id; } } }
public static ExplorerNode GetListFileFolder(ExplorerNode node) { node.Child.Clear(); ExplorerNode root = node.GetRoot; MegaApiClient client = GetClient(root.NodeType.Email); if (root == node) { string ID = node.Info.ID; INode n = null; if (!string.IsNullOrEmpty(ID)) { n = new MegaNzNode(ID); } else { n = GetRoot(root.NodeType.Email, NodeType.Root); AppSetting.settings.SetRootID(root.NodeType.Email, CloudType.Mega, n.Id); } GetItems(client, n, node); } else { if (node.Info.Size != -1) { throw new Exception("Can't explorer,this item is not folder."); } MegaNzNode inode = new MegaNzNode(node.Info.Name, node.Info.ID, node.Parent.Info.ID, -1, NodeType.Directory, node.Info.DateMod); GetItems(client, inode, node); } return(node); }
public static void CreateFolder(ExplorerNode node) { MegaNzNode parent_meganode = new MegaNzNode(node.Parent.Info.ID); MegaApiClient client = GetClient(node.GetRoot.NodeType.Email); INode folder_meganode = client.CreateFolder(node.Info.Name, parent_meganode); node.Info.ID = folder_meganode.Id; }
public static ExplorerNode GetItem(ExplorerNode node) { MegaApiClient client = GetClient(node.GetRoot.NodeType.Email); MegaNzNode inode = new MegaNzNode(node.Info.ID); GetItems(client, inode, node); return(node); }
bool CommitUploadMega() { completionHandle = mega_up.ReadDataTextResponse(); if (completionHandle.StartsWith("-")) { throw new Exception(completionHandle); } MegaAesCtrStreamCrypter encryptedStream = item.From.stream as MegaAesCtrStreamCrypter; MegaApiClient client = clientTo as MegaApiClient; MegaNzNode parent = new MegaNzNode(item.To.node.Parent.Info.ID); INode newitem = client.CommitUpload(item.From.node.Info.Name, parent, encryptedStream, completionHandle); if (newitem != null) { return(true); } throw new Exception("Commit Upload Failed."); }
public static Stream GetStream(ExplorerNode node, long start_pos = -1, long end_pos = -1, bool IsUpload = false, object DataEx = null) { if (node.Info.Size < 1) { throw new Exception("Mega GetStream: Filesize <= 0."); } MegaApiClient api = GetClient(node.GetRoot.NodeType.Email); MegaNzNode meganode = new MegaNzNode(node.Info.ID, node.Info.MegaCrypto); if (!IsUpload && start_pos >= 0)//download { long end = end_pos > 0 ? end_pos : node.Info.Size - 1; return(api.Download(meganode, start_pos, end, DataEx)); } else { throw new Exception("Not Support Upload."); } }