示例#1
0
        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;
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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;
        }
示例#4
0
        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);
        }
示例#5
0
        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.");
        }
示例#6
0
        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.");
            }
        }