Skip to content

Commit 8a6cc66

Browse files
committed
Enable specifying File names for scans
1 parent 82a6b3e commit 8a6cc66

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,6 @@ gradle-app.setting
5151
**/build/
5252

5353
# End of https://www.toptal.com/developers/gitignore/api/java,gradle,intellij
54+
.classpath
55+
.project
56+
.settings/org.eclipse.buildship.core.prefs
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.securecodebox.persistence.defectdojo.models;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class ScanFile {
7+
8+
String content;
9+
10+
// a default name must be set, it does not matter however
11+
// unless the parser pays attention to file endings like json or xml
12+
String name = "default-name.txt";
13+
14+
}

src/main/java/io/securecodebox/persistence/defectdojo/service/ImportScanService.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.securecodebox.persistence.defectdojo.ScanType;
2222
import io.securecodebox.persistence.defectdojo.config.DefectDojoConfig;
2323
import io.securecodebox.persistence.defectdojo.exceptions.DefectDojoPersistenceException;
24+
import io.securecodebox.persistence.defectdojo.models.ScanFile;
2425
import lombok.Data;
2526
import org.springframework.core.io.ByteArrayResource;
2627
import org.springframework.http.HttpEntity;
@@ -60,15 +61,15 @@ private HttpHeaders getDefectDojoAuthorizationHeaders() {
6061
/**
6162
* Before version 1.5.4. testName (in DefectDojo _test_type_) must be defectDojoScanName, afterwards, you can have somethings else
6263
*/
63-
protected ImportScanResponse createFindings(String rawResult, String endpoint, long lead, String currentDate, ScanType scanType, long testType, MultiValueMap<String, Object> options) {
64+
protected ImportScanResponse createFindings(ScanFile scanFile, String endpoint, long lead, String currentDate, ScanType scanType, long testType, MultiValueMap<String, Object> options) {
6465
RestTemplate restTemplate = new RestTemplate();
6566
HttpHeaders headers = getDefectDojoAuthorizationHeaders();
6667
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
6768
restTemplate.setMessageConverters(List.of(
6869
new FormHttpMessageConverter(),
6970
new ResourceHttpMessageConverter(),
7071
new MappingJackson2HttpMessageConverter())
71-
);
72+
);
7273

7374
MultiValueMap<String, Object> mvn = new LinkedMultiValueMap<>();
7475

@@ -85,12 +86,12 @@ protected ImportScanResponse createFindings(String rawResult, String endpoint, l
8586
mvn.addAll(options);
8687

8788
try {
88-
ByteArrayResource contentsAsResource = new ByteArrayResource(rawResult.getBytes(StandardCharsets.UTF_8)) {
89-
@Override
90-
public String getFilename() {
91-
return "this_needs_to_be_here_but_doesnt_really_matter.txt";
92-
}
93-
};
89+
ByteArrayResource contentsAsResource = new ByteArrayResource(scanFile.getContent().getBytes(StandardCharsets.UTF_8)) {
90+
@Override
91+
public String getFilename() {
92+
return scanFile.getName();
93+
}
94+
};
9495

9596
mvn.add("file", contentsAsResource);
9697

@@ -102,18 +103,18 @@ public String getFilename() {
102103
}
103104
}
104105

105-
public ImportScanResponse importScan(String rawResults, long engagementId, long lead, String currentDate, ScanType scanType, long testType) {
106+
public ImportScanResponse importScan(ScanFile scanFile, long engagementId, long lead, String currentDate, ScanType scanType, long testType) {
106107
var additionalValues = new LinkedMultiValueMap<String, Object>();
107108
additionalValues.add("engagement", Long.toString(engagementId));
108109

109-
return this.createFindings(rawResults, "import-scan", lead, currentDate, scanType, testType, additionalValues);
110+
return this.createFindings(scanFile, "import-scan", lead, currentDate, scanType, testType, additionalValues);
110111
}
111112

112-
public ImportScanResponse reimportScan(String rawResults, long testId, long lead, String currentDate, ScanType scanType, long testType) {
113+
public ImportScanResponse reimportScan(ScanFile scanFile, long testId, long lead, String currentDate, ScanType scanType, long testType) {
113114
var additionalValues = new LinkedMultiValueMap<String, Object>();
114115
additionalValues.add("test", Long.toString(testId));
115116

116-
return this.createFindings(rawResults, "reimport-scan", lead, currentDate, scanType, testType, additionalValues);
117+
return this.createFindings(scanFile, "reimport-scan", lead, currentDate, scanType, testType, additionalValues);
117118
}
118119

119120
@Data

0 commit comments

Comments
 (0)