예제 #1
0
        private async Task AddFileFromDropboxToDB(Metadata file, PhotographerFolder destFolder)
        {
            long fileSize        = Convert.ToInt64(file.AsFile.Size);
            var  thumbnailResult = await Dbx.Files.GetThumbnailAsync(file.PathLower);

            var imageByteArr = await thumbnailResult.GetContentAsByteArrayAsync();

            var photoFile = new PhotographerFile
            {
                Name                 = file.Name,
                Size                 = fileSize,
                Depth                = destFolder.Depth,
                Path                 = file.PathLower,
                ThumbnailImage       = imageByteArr,
                DropboxFileId        = file.AsFile.Id,
                PhotographerFolderId = destFolder.PhotographerFolderId,
                PhotographerFolder   = destFolder
            };

            destFolder.PhotographerFiles.Add(photoFile);
            Db.SaveChanges();
        }
예제 #2
0
        private async Task TraverseRecursive(DropboxClient dbx, string filepath, DropboxFolder folder, ApplicationUser currUser)
        {
            var list = await dbx.Files.ListFolderAsync(filepath);

            string dropboxFolderId;

            if (filepath == string.Empty)
            {
                dropboxFolderId = "";
            }
            else
            {
                var folderMetadata = await dbx.Files.GetMetadataAsync(filepath);

                dropboxFolderId = folderMetadata.AsFolder.Id;
            }

            // adding folder to table PhotographerFolders
            var photoFolder = new PhotographerFolder
            {
                Name              = folder.Name,
                Depth             = folder.Depth,
                Path              = folder.Path,
                DropboxCursor     = list.Cursor,
                DropboxFolderId   = dropboxFolderId,
                ApplicationUserId = currUser.Id,
                ApplicationUser   = currUser,
                PhotographerFiles = new List <PhotographerFile>()
            };

            db.PhotographerFolders.Add(photoFolder);
            db.SaveChanges();

            foreach (var item in list.Entries.Where(i => i.IsFile))
            {
                if (fileExtensionsHelper.IsAllowedFileExtension(item.PathLower))
                {
                    long fileSize = Convert.ToInt64(item.AsFile.Size);

                    var thumbnailResult = await dbx.Files.GetThumbnailAsync(item.PathLower);

                    var imageByteArr = await thumbnailResult.GetContentAsByteArrayAsync();

                    DropboxFile dropboxFile = new DropboxFile(item.PathLower, item.Name, fileSize, folder.Depth, imageByteArr);
                    folder.AddFile(dropboxFile);

                    // adding file to table PhotographerFiles
                    var photoFile = new PhotographerFile
                    {
                        Name                 = item.Name,
                        Size                 = fileSize,
                        Depth                = folder.Depth,
                        Path                 = item.PathLower,
                        ThumbnailImage       = imageByteArr,
                        DropboxFileId        = item.AsFile.Id,
                        PhotographerFolderId = photoFolder.PhotographerFolderId,
                        PhotographerFolder   = photoFolder
                    };
                    db.PhotographerFiles.Add(photoFile);
                    db.SaveChanges();
                    photoFolder.PhotographerFiles.Add(photoFile);
                }
            }
            db.SaveChanges();

            currUser.PhotographerFolders.Add(photoFolder);

            int newDepth = folder.Depth;

            newDepth++;
            foreach (var item in list.Entries.Where(i => i.IsFolder))
            {
                DropboxFolder dropboxFolder = new DropboxFolder(item.PathLower, item.Name, newDepth);
                folder.AddFolder(dropboxFolder);

                await TraverseRecursive(dbx, item.PathLower, dropboxFolder, currUser);
            }
        }
예제 #3
0
        private async Task AddFolderBranchFromDropboxToDB(Metadata folder, int depth)
        {
            var folderContents = await Dbx.Files.ListFolderAsync(folder.PathLower);

            var photoFolder = new PhotographerFolder
            {
                Name              = folder.Name,
                Depth             = depth,
                Path              = folder.PathLower,
                DropboxCursor     = folderContents.Cursor,
                DropboxFolderId   = folder.AsFolder.Id,
                ApplicationUserId = CurrUser.Id,
                ApplicationUser   = CurrUser,
                PhotographerFiles = new List <PhotographerFile>()
            };

            Db.PhotographerFolders.Add(photoFolder);
            Db.SaveChanges();

            foreach (var item in folderContents.Entries.Where(i => i.IsFile))
            {
                if (fileExtensionsHelper.IsAllowedFileExtension(item.PathLower))
                {
                    long fileSize = Convert.ToInt64(item.AsFile.Size);

                    var thumbnailResult = await Dbx.Files.GetThumbnailAsync(item.PathLower);

                    var imageByteArr = await thumbnailResult.GetContentAsByteArrayAsync();

                    //DropboxFile dropboxFile = new DropboxFile(item.PathLower, item.Name, fileSize, folder.Depth, imageByteArr);
                    //folder.AddFile(dropboxFile);

                    // adding file to table PhotographerFiles
                    var photoFile = new PhotographerFile
                    {
                        Name                 = item.Name,
                        Size                 = fileSize,
                        Depth                = depth,
                        Path                 = item.PathLower,
                        ThumbnailImage       = imageByteArr,
                        DropboxFileId        = item.AsFile.Id,
                        PhotographerFolderId = photoFolder.PhotographerFolderId,
                        PhotographerFolder   = photoFolder
                    };
                    Db.PhotographerFiles.Add(photoFile);
                    Db.SaveChanges();
                    photoFolder.PhotographerFiles.Add(photoFile);
                }
            }
            Db.SaveChanges();

            CurrUser.PhotographerFolders.Add(photoFolder);

            int newDepth = depth;

            newDepth++;
            foreach (var item in folderContents.Entries.Where(i => i.IsFolder))
            {
                await AddFolderBranchFromDropboxToDB(item, newDepth);
            }
        }