Esempio n. 1
0
        /// <summary>
        ///     Method to upload a folder
        /// </summary>
        /// <param name="protocol"></param>
        /// <returns></returns>
        private bool UploadFolder(IProtocol protocol)
        {
            var uploaded              = true;
            var localParentDirectory  = PortablePath.GetParentDirectory(Source);
            var remoteParentDirectory = PortablePath.GetParentDirectory(Destination);
            var foldersToProcess      = new Queue <string>();

            foldersToProcess.Enqueue(Source);
            while (foldersToProcess.Count > 0)
            {
                var folderToPress = foldersToProcess.Dequeue();
                //Create the folder
                protocol.CreateDirectory(PortablePath.ReplaceAndNormalize(folderToPress, localParentDirectory,
                                                                          remoteParentDirectory));

                //Upload folder files
                var filesToProcess = Directory.GetFiles(folderToPress);
                foreach (var file in filesToProcess)
                {
                    uploaded = uploaded &&
                               protocol.UploadFile(file,
                                                   PortablePath.ReplaceAndNormalize(file, localParentDirectory, remoteParentDirectory));
                }

                //Enqueue subfolders
                var subFolders = Directory.GetDirectories(folderToPress);
                foreach (var folder in subFolders)
                {
                    foldersToProcess.Enqueue(folder);
                }
            }
            return(uploaded);
        }