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(); }
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); } }
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); } }