From 61849a5abf0f75c643cb5d54dd1915a18bd0fdcc Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Mon, 27 Mar 2023 14:45:38 +0300 Subject: [PATCH] changes in dmp deposit model --- README.md | 3 +- .../interfaces/ZenodoDeposit.java | 30 +++++++++++-------- src/main/resources/application.properties | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a379927..9410dcd 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,5 @@ c. **2** stands for both ways deposition if the repository allows the deposits o **repositoryAccessTokenUrl** - repository's access token url e.g. "https://sandbox.zenodo.org/oauth/token"
**repositoryClientId** - repository's client id
**repositoryClientSecret** - repository's client secret
-**redirectUri** - redirect uri to argos after the oauth2 flow from the repository
\ No newline at end of file +**redirectUri** - redirect uri to argos after the oauth2 flow from the repository
+**hasLogo** - if the repository has a logo
\ No newline at end of file diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java index 6436424..58c781c 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java @@ -2,6 +2,7 @@ package eu.eudat.depositinterface.zenodorepository.interfaces; import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.depositinterface.models.DMPDepositModel; +import eu.eudat.depositinterface.models.FileEnvelope; import eu.eudat.depositinterface.repository.RepositoryDeposit; import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; import eu.eudat.depositinterface.zenodorepository.config.ConfigLoader; @@ -12,10 +13,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.core.io.FileSystemResource; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -23,9 +21,7 @@ import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestTemplate; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import java.nio.file.Files; import java.util.*; @@ -128,15 +124,25 @@ public class ZenodoDeposit implements RepositoryDeposit { if (unpublishedUrl == null) { // Second step, add the file to the entry. - File pdfFile = dmpDepositModel.getPdfFile(); - String fileName = dmpDepositModel.getPdfFileName(); - FileSystemResource fileSystemResource = new FileSystemResource(pdfFile); + FileEnvelope pdfEnvelope = dmpDepositModel.getPdfFile(); + FileSystemResource fileSystemResource = new FileSystemResource(pdfEnvelope.getFile()); HttpEntity addFileMapRequest = new HttpEntity<>(fileSystemResource, null); - String addFileUrl = links.get("bucket") + "/" + fileName + "?access_token=" + zenodoToken; + String addFileUrl = links.get("bucket") + "/" + pdfEnvelope.getFilename() + "?access_token=" + zenodoToken; restTemplate.put(addFileUrl, addFileMapRequest); - ResponseEntity jsonFile = dmpDepositModel.getRdaJson(); + FileEnvelope rdaJsonEnvelope = dmpDepositModel.getRdaJsonFile(); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.setContentLength(rdaJsonEnvelope.getFile().length()); + responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + responseHeaders.set("Content-Disposition", "attachment;filename=" + rdaJsonEnvelope.getFilename()); + responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); + responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); + + byte[] content = Files.readAllBytes(rdaJsonEnvelope.getFile().toPath()); + + ResponseEntity jsonFile = new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); + UUID jsonFileUUID = UUID.randomUUID(); File tempJsonFile = new File(this.environment.getProperty("storage.temp") + jsonFileUUID + ".json"); try (FileOutputStream jsonFos = new FileOutputStream(tempJsonFile)) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index edb8c21..7a587a5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ configuration.doi_funder=DOI_Funder.json -configuration.logo=zenodo.jpg +configuration.zenodo.logo=${CONFIGURATION_LOGO_ZENODO} storage.temp=${STORAGE_TMP_ZENODO} configuration.zenodo=${CONFIGURATION_ZENODO}