public async Task <DropboxFile> GetFile(ApplicationUser currUser, int fileId) { var dbfile = db.PhotographerFiles.SingleOrDefault(c => c.PhotographerFileId == fileId); if (dbfile == null) { return(null); } string linkToFile = string.Empty; if (currUser.PhotographerInfo != null && currUser.PhotographerInfo.DropboxAccessToken != null) { using (var dbx = new DropboxClient(currUser.PhotographerInfo.DropboxAccessToken)) { var linkMetadata = await dbx.Files.GetTemporaryLinkAsync(dbfile.Path); linkToFile = linkMetadata.Link; } } DropboxFile file = new DropboxFile { Name = dbfile.Name, Path = dbfile.Path, Size = dbfile.Size, Depth = dbfile.Depth, LinkToFile = linkToFile }; return(file); }
//All units used here has been unit tested seperately protected override List <string> PerformExecution(Dictionary <string, string> evaluatedValues) { string localToPath; evaluatedValues.TryGetValue("ToPath", out localToPath); string localFromPath; evaluatedValues.TryGetValue("FromPath", out localFromPath); IDropboxSingleExecutor <IDropboxResult> dropBoxDownLoad = new DropBoxDownLoad(localToPath); var dropboxSingleExecutor = GetDropboxSingleExecutor(dropBoxDownLoad); _dropboxClientWrapper = _dropboxClientWrapper ?? new DropboxClientWrapper(GetClient()); var dropboxExecutionResult = dropboxSingleExecutor.ExecuteTask(_dropboxClientWrapper); var dropboxSuccessResult = dropboxExecutionResult as DropboxDownloadSuccessResult; if (dropboxSuccessResult != null) { Response = dropboxSuccessResult.GetDownloadResponse(); var bytes = Response.GetContentAsByteArrayAsync().Result; if (Response.Response.IsFile) { LocalPathManager = new LocalPathManager(localFromPath); var validFolder = LocalPathManager.GetFullFileName(); var fileExist = LocalPathManager.FileExist(); if (fileExist && !OverwriteFile) { throw new Exception(ErrorResource.DropBoxDestinationFileAlreadyExist); } DropboxFile.WriteAllBytes(validFolder, bytes); } return(new List <string> { GlobalConstants.DropBoxSuccess }); } var dropboxFailureResult = dropboxExecutionResult as DropboxFailureResult; if (dropboxFailureResult != null) { Exception = dropboxFailureResult.GetException(); } var executionError = Exception.InnerException?.Message ?? Exception.Message; if (executionError.Contains("not_file")) { executionError = ErrorResource.DropBoxFilePathMissing; } throw new Exception(executionError); }
/// <summary> /// Abstract template method that reads the actualy object. Invoked from <see cref="M:Read"/>. /// </summary> /// <typeparam name="T">The type of object to return.</typeparam> /// <param name="message">The HTTP message to read from.</param> /// <returns>The converted object.</returns> /// <exception cref="HttpMessageNotReadableException">In case of conversion errors</exception> protected override T ReadInternal <T>(IHttpInputMessage message) { DropboxFile file = new DropboxFile(); // Read file's content as an array of bytes file.Content = base.ReadInternal <byte[]>(message); // Read metadata content from 'x-dropbox-metadata' header string metadataHeaderContent = message.Headers["x-dropbox-metadata"]; if (metadataHeaderContent != null) { JsonValue metadataJsonValue; if (JsonValue.TryParse(metadataHeaderContent, out metadataJsonValue)) { file.Metadata = this.jsonMapper.Deserialize <Entry>(metadataJsonValue); } } return(file as T); }
public void DownloadPartialFile() { responseHeaders["x-dropbox-metadata"] = "{ \"size\": \"225.4KB\", \"rev\": \"35e97029684fe\", \"thumb_exists\": false, \"bytes\": 230783, \"modified\": \"Tue, 19 Jul 2011 21:55:38 +0000\", \"path\": \"/Getting_Started.pdf\", \"is_dir\": false, \"icon\": \"page_white_acrobat\", \"root\": \"dropbox\", \"mime_type\": \"application/pdf\", \"revision\": 220823 }"; responseHeaders.ContentType = MediaType.TEXT_PLAIN; mockServer.ExpectNewRequest() .AndExpectUri("https://api-content.dropbox.com/1/files/dropbox/Dir/File.txt?rev=a123z") .AndExpectMethod(HttpMethod.GET) .AndExpectHeader("Range", "bytes=0-1023") .AndRespondWith(EmbeddedResource("File.txt"), responseHeaders); #if NET_4_0 || SILVERLIGHT_5 DropboxFile file = dropbox.DownloadPartialFileAsync("Dir/File.txt", 0, 1024, "a123z", CancellationToken.None).Result; #else DropboxFile file = dropbox.DownloadPartialFile("Dir/File.txt", 0, 1024, "a123z"); #endif Assert.IsNotNull(file); // Content Assert.IsNotNull(file.Content); Assert.IsNotEmpty(file.Content); // Metadata Assert.AreEqual(230783, file.Metadata.Bytes); Assert.IsNull(file.Metadata.Hash); Assert.AreEqual("page_white_acrobat", file.Metadata.Icon); Assert.AreEqual(false, file.Metadata.IsDeleted); Assert.AreEqual(false, file.Metadata.IsDirectory); Assert.AreEqual("application/pdf", file.Metadata.MimeType); Assert.IsNotNull(file.Metadata.ModifiedDate); Assert.AreEqual("19/07/2011 21:55:38", file.Metadata.ModifiedDate.Value.ToUniversalTime().ToString("dd'/'MM'/'yyyy HH:mm:ss")); Assert.AreEqual("/Getting_Started.pdf", file.Metadata.Path); Assert.AreEqual("35e97029684fe", file.Metadata.Revision); Assert.AreEqual("dropbox", file.Metadata.Root); Assert.AreEqual("225.4KB", file.Metadata.Size); Assert.IsFalse(file.Metadata.ThumbExists); Assert.IsNull(file.Metadata.Contents); }
public void DownloadThumbnail() { responseHeaders["x-dropbox-metadata"] = "{ \"size\": \"225.4KB\", \"rev\": \"35e97029684fe\", \"thumb_exists\": false, \"bytes\": 230783, \"modified\": \"Tue, 19 Jul 2011 21:55:38 +0000\", \"path\": \"/Getting_Started.pdf\", \"is_dir\": false, \"icon\": \"page_white_acrobat\", \"root\": \"dropbox\", \"mime_type\": \"application/pdf\", \"revision\": 220823 }"; responseHeaders.ContentType = MediaType.IMAGE_PNG; mockServer.ExpectNewRequest() .AndExpectUri("https://api-content.dropbox.com/1/thumbnails/dropbox/Dir/Image.jpg?format=PNG&size=xl") .AndExpectMethod(HttpMethod.GET) .AndRespondWith(EmbeddedResource("Image.png"), responseHeaders); #if NET_4_0 || SILVERLIGHT_5 DropboxFile thumbnail = dropbox.DownloadThumbnailAsync("Dir/Image.jpg", ThumbnailFormat.Png, ThumbnailSize.ExtraLarge).Result; #else DropboxFile thumbnail = dropbox.DownloadThumbnail("Dir/Image.jpg", ThumbnailFormat.Png, ThumbnailSize.ExtraLarge); #endif Assert.IsNotNull(thumbnail); // Content Assert.IsNotNull(thumbnail); Assert.IsNotEmpty(thumbnail.Content); // Metadata Assert.AreEqual(230783, thumbnail.Metadata.Bytes); Assert.IsNull(thumbnail.Metadata.Hash); Assert.AreEqual("page_white_acrobat", thumbnail.Metadata.Icon); Assert.AreEqual(false, thumbnail.Metadata.IsDeleted); Assert.AreEqual(false, thumbnail.Metadata.IsDirectory); Assert.AreEqual("application/pdf", thumbnail.Metadata.MimeType); Assert.IsNotNull(thumbnail.Metadata.ModifiedDate); Assert.AreEqual("19/07/2011 21:55:38", thumbnail.Metadata.ModifiedDate.Value.ToUniversalTime().ToString("dd'/'MM'/'yyyy HH:mm:ss")); Assert.AreEqual("/Getting_Started.pdf", thumbnail.Metadata.Path); Assert.AreEqual("35e97029684fe", thumbnail.Metadata.Revision); Assert.AreEqual("dropbox", thumbnail.Metadata.Root); Assert.AreEqual("225.4KB", thumbnail.Metadata.Size); Assert.IsFalse(thumbnail.Metadata.ThumbExists); Assert.IsNull(thumbnail.Metadata.Contents); }
private void PluginForm_Shown(object sender, EventArgs e) { Refresh(); _oAuth2token = GetSavedToken(); var api = new DropboxApi(SeAppKey, SeAppsecret, _oAuth2token); if (_oAuth2token == null) { try { Process.Start(api.GetPromptForCodeUrl()); using (var form = new GetDropBoxCode()) { var result = form.ShowDialog(this); if (result == DialogResult.OK && form.Code.Length > 10) { _oAuth2token = api.GetAccessToken(form.Code); } else { MessageBox.Show("Code skipped - no Dropbox :("); return; } } labelInfo.Text = string.Empty; SaveToken(_oAuth2token); } catch (Exception exception) { labelInfo.Text = string.Empty; labelDescription.Text = string.Empty; _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } } labelDescription.Text = string.Empty; labelInfo.Text = "Getting file list..."; Cursor = Cursors.WaitCursor; Refresh(); try { _fileList = api.GetFiles(""); Cursor = Cursors.Default; } catch (Exception exception) { Cursor = Cursors.Default; _connectTries++; _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } labelInfo.Text = string.Empty; FillListView(); }
private void buttonOK_Click(object sender, EventArgs e) { if (listViewFiles.SelectedItems.Count < 1) { return; } string fileName = listViewFiles.SelectedItems[0].Text; Refresh(); try { Cursor = Cursors.WaitCursor; var f = listViewFiles.SelectedItems[0].Tag as DropboxFile; if (f != null) { var api = new DropboxApi(SeAppKey, SeAppsecret, _oAuth2token); if (f.IsDirectory) { labelInfo.Text = "Getting file list..."; labelDescription.Text = f.Path; Refresh(); _fileList = api.GetFiles(f.Path); if (f.Description == "..") { if (_folder.Count > 0) { var path = _folder.Pop(); var list = _fileList.Contents.ToList(); if (path != string.Empty) { list.Insert(0, new DropboxFile { Path = GetWithoutPart(path), IsDirectory = true, Description = ".." }); } _fileList.Contents = list; } } else { string s = GetWithoutPart(f.Path); _folder.Push(s); var list = _fileList.Contents.ToList(); list.Insert(0, new DropboxFile { Path = s, IsDirectory = true, Description = ".." }); _fileList.Contents = list; } FillListView(); } else { labelInfo.Text = "Downloading..."; Refresh(); var fileDown = api.DownloadFile(listViewFiles.SelectedItems[0].Tag as DropboxFile); LoadedSubtitle = Encoding.UTF8.GetString(fileDown.Data); DialogResult = DialogResult.OK; } Cursor = Cursors.Default; } labelInfo.Text = string.Empty; Refresh(); } catch (Exception exception) { Cursor = Cursors.Default; MessageBox.Show(exception.Message); } }
private void PluginForm_Shown(object sender, EventArgs e) { this.Refresh(); OAuthToken accessToken = GetSavedToken(); if (accessToken == null) { try { // Step 1/3: Get request token OAuthToken oauthToken = GetRequestToken(); // Step 2/3: Authorize application var queryString = String.Format("oauth_token={0}", oauthToken.Token); var authorizeUrl = "https://www.dropbox.com/1/oauth/authorize?" + queryString; Process.Start(authorizeUrl); MessageBox.Show("Accept App request from Subtitle Edit - and press OK"); labelInfo.Text = string.Empty; accessToken = GetAccessToken(oauthToken); SaveToken(accessToken.Token, accessToken.Secret); } catch (Exception exception) { labelInfo.Text = string.Empty; labelDescription.Text = string.Empty; _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } } labelDescription.Text = string.Empty; labelInfo.Text = "Getting file list..."; Cursor = Cursors.WaitCursor; this.Refresh(); var api = new DropboxApi(SeConsumerKey, SeConsumerSecret, accessToken); try { _fileList = api.GetFiles("sandbox", string.Empty); Cursor = Cursors.Default; } catch (Exception exception) { Cursor = Cursors.Default; _connectTries++; _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } labelInfo.Text = string.Empty; foreach (DropboxFile f in _fileList.Contents) { ListViewItem item = new ListViewItem(f.Path); item.SubItems.Add(f.Modified.ToShortDateString() + f.Modified.ToShortTimeString()); item.SubItems.Add(f.Size); listViewFiles.Items.Add(item); } if (listViewFiles.Items.Count > 0) { listViewFiles.Items[0].Selected = true; } }
private void PluginForm_Shown(object sender, EventArgs e) { this.Refresh(); OAuthToken accessToken = GetSavedToken(); if (accessToken == null) { try { // Step 1/3: Get request token OAuthToken oauthToken = GetRequestToken(); // Step 2/3: Authorize application var queryString = String.Format("oauth_token={0}", oauthToken.Token); var authorizeUrl = "https://www.dropbox.com/1/oauth/authorize?" + queryString; Process.Start(authorizeUrl); MessageBox.Show("Accept App request from Subtitle Edit - and press OK"); labelInfo.Text = string.Empty; accessToken = GetAccessToken(oauthToken); SaveToken(accessToken.Token, accessToken.Secret); } catch (Exception exception) { _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } } labelInfo.Text = "Getting file list..."; this.Refresh(); var api = new DropboxApi(SeConsumerKey, SeConsumerSecret, accessToken); try { Cursor = Cursors.WaitCursor; _fileList = api.GetFiles("sandbox", string.Empty); Cursor = Cursors.Default; } catch (Exception exception) { Cursor = Cursors.Default; _connectTries++; PluginForm_Shown(sender, e); _connectTries++; if (_connectTries < 2) { PluginForm_Shown(sender, e); return; } MessageBox.Show(exception.Message); buttonOK.Enabled = false; return; } labelInfo.Text = string.Empty; MakeDescriptionPrompt(); }
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); } }