Skip to content

Commit 7cb5c51

Browse files
committed
Skip checksum validation for multifile downloads where no checksum is provided
1 parent e1c0453 commit 7cb5c51

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

src/main/java/io/github/jpmorganchase/fusion/api/request/PartFetcher.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static io.github.jpmorganchase.fusion.api.tools.ResponseChecker.checkResponseStatus;
44

55
import io.github.jpmorganchase.fusion.FusionConfiguration;
6+
import io.github.jpmorganchase.fusion.api.exception.FileDownloadException;
67
import io.github.jpmorganchase.fusion.api.response.GetPartResponse;
78
import io.github.jpmorganchase.fusion.api.response.Head;
89
import io.github.jpmorganchase.fusion.api.stream.IntegrityCheckingInputStream;
@@ -55,23 +56,32 @@ public GetPartResponse fetch(PartRequest pr) {
5556
}
5657

5758
private InputStream getIntegrityCheckingInputStream(HttpResponse<InputStream> response, Head head, PartRequest pr) {
58-
if (shouldSkipChecksumValidation(head, pr.getDownloadRequest())) {
59-
return response.getBody();
59+
String checksum = head.getChecksum();
60+
boolean checksumMissing = Objects.isNull(checksum) || checksum.isEmpty();
61+
DownloadRequest downloadRequest = pr.getDownloadRequest();
62+
63+
if (checksumMissing) {
64+
if (downloadRequest.isSkipChecksumValidationIfMissing()) {
65+
log.debug(
66+
"Skipping checksum validation for download request {}",
67+
downloadRequest);
68+
return response.getBody();
69+
} else {
70+
throw new FileDownloadException(
71+
"Checksum validation failed: checksum is missing for download request: "
72+
+ downloadRequest);
73+
}
6074
}
6175

76+
log.debug("Verifying checksum for download request {} with checksum: {}", downloadRequest, checksum);
6277
return IntegrityCheckingInputStream.builder()
6378
.part(response.getBody())
64-
.checksum(head.getChecksum())
79+
.checksum(checksum)
6580
.partChecker(
6681
PartChecker.builder().digestAlgo(getDigestAlgo(head)).build())
6782
.build();
6883
}
6984

70-
private boolean shouldSkipChecksumValidation(Head head, DownloadRequest downloadRequest) {
71-
String checksum = head.getChecksum();
72-
return (Objects.isNull(checksum) || checksum.isEmpty()) && downloadRequest.isSkipChecksumValidationIfMissing();
73-
}
74-
7585
private String getDigestAlgo(Head head) {
7686
return head.getChecksumAlgorithm() != null ? head.getChecksumAlgorithm() : configuration.getDigestAlgorithm();
7787
}

0 commit comments

Comments
 (0)