Ejemplo n.º 1
0
        public static ExplorerNode GetListFileFolder(ExplorerNode node)
        {
            DropboxRequestAPIv2 client = GetAPIv2(node.GetRoot.NodeType.Email);

            IDropbox_Response_ListFolder response = client.ListFolder(new Dropbox_Request_ListFolder(node.GetFullPathString(false)));

            node.Child.Clear();
            foreach (IDropbox_Response_MetaData metadata in response.entries)
            {
                if (metadata.tag == "folder")
                {
                    new ExplorerNode(
                        new NodeInfo()
                    {
                        Name = metadata.name, Size = -1, ID = metadata.id
                    }, node);
                }
            }

            foreach (IDropbox_Response_MetaData metadata in response.entries)
            {
                if (metadata.tag == "file")
                {
                    new ExplorerNode(
                        new NodeInfo()
                    {
                        Name = metadata.name, Size = metadata.size, ID = metadata.id, DateMod = DateTime.Parse(metadata.client_modified)
                    }, node);
                }
            }
            return(node);
        }
Ejemplo n.º 2
0
        private void Oauth_dropbox_TokenCallBack(string token)
        {
            Console.WriteLine("dropbox token call back");
            DropboxRequestAPIv2 client = new DropboxRequestAPIv2(token);
            IDropbox_Response_GetCurrentAccount account = client.GetCurrentAccount();

            SaveToken(account.email, token, CloudType.Dropbox);
        }
Ejemplo n.º 3
0
        public static void CreateFolder(ExplorerNode node)
        {
            if (node == node.GetRoot)
            {
                throw new Exception("Node is root.");
            }
            DropboxRequestAPIv2        client   = GetAPIv2(node.GetRoot.NodeType.Email);
            IDropbox_Response_MetaData metadata = client.create_folder(new Dropbox_path(node.GetFullPathString(false)));

            node.Info.ID = metadata.id;
        }
Ejemplo n.º 4
0
        public static ExplorerNode GetMetaData(ExplorerNode node)
        {
            DropboxRequestAPIv2        client   = GetAPIv2(node.GetRoot.NodeType.Email);
            IDropbox_Response_MetaData metadata = client.GetMetadata(
                new Dropbox_Request_Metadata(string.IsNullOrEmpty(node.Info.ID) ? node.GetFullPathString(false, true) : "id:" + node.Info.ID));

            node.Info.Name    = metadata.name;
            node.Info.DateMod = DateTime.Parse(metadata.server_modified);
            node.Info.Size    = metadata.size;
            return(node);
        }
Ejemplo n.º 5
0
        private void Ui_EventUriResponse(Uri uri)
        {
            string code = HttpUtility.ParseQueryString(uri.Query).Get("code");

            if (code == null)
            {
                ReturnToken(null);
                return;
            }
            DropboxRequestAPIv2 client = new DropboxRequestAPIv2();

            client.GetAccessToken(code, port);
            ReturnToken(client.AccessToken);
        }
Ejemplo n.º 6
0
        public static bool Move(ExplorerNode nodemove, ExplorerNode newparent, string newname = null)
        {
            if (nodemove.GetRoot.NodeType.Email != newparent.GetRoot.NodeType.Email || nodemove.GetRoot.NodeType.Type != newparent.GetRoot.NodeType.Type)
            {
                throw new Exception("Cloud not match.");
            }
            DropboxRequestAPIv2        client   = GetAPIv2(nodemove.GetRoot.NodeType.Email);
            IDropbox_Response_MetaData metadata = client.move(
                new Dropbox_Request_MoveCopy(nodemove.GetFullPathString(false),
                                             newparent.GetFullPathString(false) + "/" + newname == null ? nodemove.Info.Name : newname
                                             ));

            return(newparent.GetFullPathString(false) == metadata.path_display);
        }
Ejemplo n.º 7
0
        public static bool Delete(ExplorerNode node, bool PernamentDelete)
        {
            DropboxRequestAPIv2 dropbox_client = GetAPIv2(node.GetRoot.NodeType.Email);
            string path = node.GetFullPathString(false);

            if (PernamentDelete)
            {
                dropbox_client.permanently_delete(new Dropbox_path(path));
                return(true);
            }
            else
            {
                IDropbox_Response_MetaData metadata = dropbox_client.delete(new Dropbox_path(path));
                return(true);
            }
        }
Ejemplo n.º 8
0
        public static string AutoCreateFolder(ExplorerNode node)
        {
            if (node.Info.Size > 0)
            {
                throw new Exception("Node is file.");
            }
            DropboxRequestAPIv2 client = GetAPIv2(node.GetRoot.NodeType.Email);

            try
            {
                Monitor.Enter(sync_CreateFolder);

                List <ExplorerNode> pathlist = node.GetFullPath();
                int i;
                for (i = 1; i < pathlist.Count; i++)
                {
                    try
                    {
                        client.ListFolder(new Dropbox_Request_ListFolder(pathlist[i].GetFullPathString(false)));
                    }
                    catch (HttpException ex)
                    {
                        if (ex.ErrorCode == 409)
                        {
                            break;
                        }
                        throw ex;
                    }
                }
                for (; i < pathlist.Count; i++)
                {
                    client.create_folder(new Dropbox_path(pathlist[i].GetFullPathString(false)));
                }
                return(pathlist[i - 1].GetFullPathString(false));
            }
            finally { Monitor.Exit(sync_CreateFolder); }
        }
Ejemplo n.º 9
0
        void Transfer(TransferItem item)
        {
#if DEBUG
            Console.WriteLine("Transfer items:" + item.From.node.GetFullPathString());
#endif
            int buffer_length = 32;                                                                                                                 //default
            int.TryParse(AppSetting.settings.GetSettingsAsString(SettingsKey.BufferSize), out buffer_length);                                       //get buffer_length from setting
            item.buffer = item.From.node.GetRoot.NodeType.Type == CloudType.Mega ? new byte[buffer_length * 2048] : new byte[buffer_length * 1024]; //create buffer

            ExplorerNode rootnodeto = item.To.node.GetRoot;

            item.byteread = 0;
            //this.group.items[x].UploadID = "";//resume
            item.SizeWasTransfer = item.OldTransfer = item.SaveSizeTransferSuccess; //resume
            item.ErrorMsg        = "";                                              //clear error
            item.TimeStamp       = CurrentMillis.Millis;
            if (GroupData.status != StatusTransfer.Running)
            {
                return;
            }
            switch (rootnodeto.NodeType.Type)
            {
            case CloudType.LocalDisk:
                #region LocalDisk
                ItemsTransferWork.Add(new TransferBytes(item, this));
                return;

                #endregion

            case CloudType.Dropbox:
                #region Dropbox
                int chunksizedb = 25;    //default 25Mb
                int.TryParse(AppSetting.settings.GetSettingsAsString(SettingsKey.Dropbox_ChunksSize), out chunksizedb);
                item.ChunkUploadSize = chunksizedb * 1024 * 1024;

                DropboxRequestAPIv2 DropboxClient = Dropbox.GetAPIv2(rootnodeto.NodeType.Email);

                if (string.IsNullOrEmpty(item.UploadID))    //create upload id
                {
                    item.byteread = item.From.stream.Read(item.buffer, 0, item.buffer.Length);
                    IDropbox_Request_UploadSessionAppend session = DropboxClient.upload_session_start(item.buffer, item.byteread);
                    item.UploadID         = session.session_id;
                    item.SizeWasTransfer += item.byteread;
                }
                ItemsTransferWork.Add(new TransferBytes(item, this, DropboxClient));
                return;

                #endregion

            case CloudType.GoogleDrive:
                #region GoogleDrive
                DriveAPIHttprequestv2 gdclient = GoogleDrive.GetAPIv2(rootnodeto.NodeType.Email);
                GoogleDrive.CreateFolder(item.To.node.Parent);
                int chunksizeGD = 5;    //default
                int.TryParse(AppSetting.settings.GetSettingsAsString(SettingsKey.GD_ChunksSize), out chunksizeGD);
                item.ChunkUploadSize = chunksizeGD * 1024 * 1024;

                if (string.IsNullOrEmpty(item.UploadID))    //create upload id
                {
                    if (string.IsNullOrEmpty(item.To.node.Parent.Info.ID))
                    {
                        throw new Exception("Can't get root id.");
                    }
                    string parentid = item.To.node.Parent.Info.ID;
                    string mimeType = Get_mimeType.Get_mimeType_From_FileExtension(item.To.node.GetExtension());
                    string jsondata = "{\"title\": \"" + item.From.node.Info.Name + "\", \"mimeType\": \"" + mimeType + "\", \"parents\": [{\"id\": \"" + parentid + "\"}]}";
                    item.UploadID = gdclient.Files.Insert_ResumableGetUploadID(jsondata, mimeType, item.From.node.Info.Size);
                }
                ItemsTransferWork.Add(new TransferBytes(item, this, gdclient));
                return;

                #endregion

            case CloudType.Mega:
                #region Mega
                MegaApiClient MegaClient = MegaNz.GetClient(rootnodeto.NodeType.Email);
                item.buffer = new byte[128 * 1024];
                if (string.IsNullOrEmpty(item.UploadID))                                                                                      //create upload id
                {
                    MegaNz.AutoCreateFolder(item.To.node.Parent);                                                                             //auto create folder
                    item.UploadID = MegaClient.RequestUrlUpload(item.From.node.Info.Size);                                                    //Make Upload url
                }
                item.From.stream = MegaApiClient.MakeEncryptStreamForUpload(item.From.stream, item.From.node.Info.Size, item.dataCryptoMega); //make encrypt stream from file
                ItemsTransferWork.Add(new TransferBytes(item, this, MegaClient));
                return;

                #endregion
            }
        }
Ejemplo n.º 10
0
        public static Stream GetFileStream(ExplorerNode node, long Startpos = -1, long endpos = -1)
        {
            DropboxRequestAPIv2 client = GetAPIv2(node.GetRoot.NodeType.Email);

            return(client.Download(new Dropbox_path(node.GetFullPathString(false)), Startpos, endpos));
        }