/// <summary> /// uploads the file to DataVerse /// </summary> /// <param name="publishDataVerseFileModel">PublishDataVerseFileModel </param> /// <returns>File Id</returns> private void UploadFile(PublishDataVerseFileModel publishDataVerseFileModel) { string repositoryName = publishDataVerseFileModel.RepositoryModel.RepositoryName; DataFile dataFile = publishDataVerseFileModel.File; int fileId = publishDataVerseFileModel.File.FileInfo.FileId; string fileName = Path.GetFileNameWithoutExtension(dataFile.FileName); //We need to figure out how to substitute the following Curl Command with an http request sent using the .Net Framework Libraries //curl --data-binary @example.zip -H "Content-Disposition: filename=example.zip" -H "Content-Type: application/zip" -H "Packaging: http://purl.org/net/sword/package/SimpleZip" https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit-media/study/hdl:TEST/12345 }
/// <summary> /// Method to publish file /// </summary> /// <param name="postFileData">PublishMessage object</param> /// <returns>returns File Identifier</returns> public override string PublishFile(PublishMessage postFileData) { var file = this.GetFileByFileId(postFileData.FileId); IEnumerable<DM.FileColumnType> fileColumnTypes = null; IEnumerable<DM.FileColumnUnit> fileColumnUnits = null; OperationStatus status = null; Encoding encoding = Encoding.UTF8; string identifier = string.Empty; var repository = this.RepositoryService.GetRepositoryById(postFileData.RepositoryId); string authorization = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(postFileData.UserName /*UserName*/ + ":" + postFileData.Password /*Password*/)); string baseRepoName = this.RepositoryDetails.GetBaseRepositoryName(repository.BaseRepositoryId); this.RepositoryAdapter = new DataVerseAdapter(); var dataFile = this.GetDataFile(file); var repositoryModel = GetRepositoryModel(repository, authorization); PublishDataVerseFileModel publishDataVerseFileModel = new PublishDataVerseFileModel() { File = dataFile, RepositoryModel = repositoryModel, FileColumnTypes = fileColumnTypes, FileColumnUnits = fileColumnUnits, }; status = this.RepositoryAdapter.PostFile(publishDataVerseFileModel); return identifier; }