diff --git a/artifacts/src/main/java/org/openmbee/mms/artifacts/json/ArtifactJson.java b/artifacts/src/main/java/org/openmbee/mms/artifacts/json/ArtifactJson.java index 1d7b6d97a..e350e4bd3 100644 --- a/artifacts/src/main/java/org/openmbee/mms/artifacts/json/ArtifactJson.java +++ b/artifacts/src/main/java/org/openmbee/mms/artifacts/json/ArtifactJson.java @@ -20,6 +20,7 @@ public class ArtifactJson extends HashMap { public static final String EXTENSION = "extension"; public static final String LOCATION = "location"; public static final String LOCATIONTYPE = "locationType"; + public static final String CHECKSUM = "checksum"; public ArtifactJson() { super(); @@ -77,6 +78,18 @@ public ArtifactJson setLocationType(String locationType) { return this; } + @JsonProperty(CHECKSUM) + @Schema(accessMode = Schema.AccessMode.READ_ONLY) + public String getChecksum() { + return (String) this.get(CHECKSUM); + } + + @JsonProperty(CHECKSUM) + public ArtifactJson setChecksum(String checksum) { + this.put(CHECKSUM, checksum); + return this; + } + public static List getArtifacts(ElementJson elementJson){ List rawArtifacts = (List)elementJson.get(ARTIFACTS); diff --git a/artifacts/src/main/java/org/openmbee/mms/artifacts/objects/ArtifactResponse.java b/artifacts/src/main/java/org/openmbee/mms/artifacts/objects/ArtifactResponse.java index aef92ba60..269d1b632 100644 --- a/artifacts/src/main/java/org/openmbee/mms/artifacts/objects/ArtifactResponse.java +++ b/artifacts/src/main/java/org/openmbee/mms/artifacts/objects/ArtifactResponse.java @@ -3,6 +3,7 @@ public class ArtifactResponse { private String mimeType; private String extension; + private String checksum; private byte[] data; public String getMimeType() { @@ -21,6 +22,14 @@ public void setExtension(String extension) { this.extension = extension; } + public String getChecksum() { + return checksum; + } + + public void setChecksum(String checksum) { + this.checksum = checksum; + } + public byte[] getData() { return data; } diff --git a/artifacts/src/main/java/org/openmbee/mms/artifacts/service/DefaultArtifactService.java b/artifacts/src/main/java/org/openmbee/mms/artifacts/service/DefaultArtifactService.java index 3d665e3e2..3a1c0f094 100644 --- a/artifacts/src/main/java/org/openmbee/mms/artifacts/service/DefaultArtifactService.java +++ b/artifacts/src/main/java/org/openmbee/mms/artifacts/service/DefaultArtifactService.java @@ -16,10 +16,14 @@ import org.openmbee.mms.json.ElementJson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; @Service public class DefaultArtifactService implements ArtifactService { @@ -54,6 +58,7 @@ public ArtifactResponse get(String projectId, String refId, String id, Map artifacts = ArtifactJson.getArtifacts(elementJson); ArtifactJson artifact; @@ -128,6 +134,7 @@ private ElementJson attachOrUpdateArtifact(ElementJson elementJson, String artif artifact.setExtension(fileExtension); artifact.setMimeType(mimeType); artifact.setLocationType(type); + artifact.setChecksum(checksum); ArtifactJson.setArtifacts(elementJson, artifacts); return elementJson; @@ -166,6 +173,16 @@ private String getMimeTypeOfFile(MultipartFile file) { return file.getContentType(); } + public static String getChecksumOfFile(MultipartFile file) { + String checksum = ""; + try { + checksum = DigestUtils.md5DigestAsHex(file.getBytes()); + } catch (IOException ioe) { + throw new BadRequestException(ioe); + } + return checksum; + } + private NodeService getNodeService(String projectId) { return serviceFactory.getNodeService(getProjectType(projectId)); } diff --git a/example/artifacts.postman_collection.json b/example/artifacts.postman_collection.json index c96bbe376..f6300eb4d 100644 --- a/example/artifacts.postman_collection.json +++ b/example/artifacts.postman_collection.json @@ -206,6 +206,7 @@ " pm.expect(jsonData.elements.length).to.eql(1);", " pm.expect(jsonData.elements[0]['_artifacts'].length).to.eq(1);", " pm.expect(jsonData.elements[0]['_artifacts'][0].location).to.include('arta/x/jpg/')", + " pm.expect(jsonData.elements[0]['_artifacts'][0].checksum).to.include('c946d2fc350ad561fdb3c23c86a81343')", " pm.environment.set(\"commit-1-loc\", pm.response.json().elements[0]['_artifacts'][0].location);", " pm.environment.set(\"x-commit-1\", jsonData.elements[0][\"_commitId\"]);", "});", @@ -310,7 +311,8 @@ "pm.test(\"response element has 1 artifact\", function () {", " var jsonData = pm.response.json();", " pm.expect(jsonData.elements[0]['_artifacts'].length).to.eq(1);", - "});" + " pm.expect(jsonData.elements[0]['_artifacts'][0].checksum).to.include('5407655262fcca873c2f407f2dead2cf')", + "});" ], "type": "text/javascript" }