Skip to content

Clean Code #110

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
Jan 26, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Reformatting
Signed-off-by: Sven Strittmatter <sven.strittmatter@iteratec.com>
  • Loading branch information
Weltraumschaf committed Jan 19, 2024
commit a98466fecc61d552122c42c0287f3bcf18cf87e2
Original file line number Diff line number Diff line change
Expand Up @@ -33,106 +33,106 @@
*/
public class ImportScanService2 {

private final Config config;

public ImportScanService2(Config config) {
super();
this.config = config;
}

/**
* @return The DefectDojo Authentication Header
*/
private HttpHeaders getDefectDojoAuthorizationHeaders() {
return new Foo(config, new ProxyConfigFactory().create()).generateAuthorizationHeaders();
private final Config config;

public ImportScanService2(Config config) {
super();
this.config = config;
}

/**
* @return The DefectDojo Authentication Header
*/
private HttpHeaders getDefectDojoAuthorizationHeaders() {
return new Foo(config, new ProxyConfigFactory().create()).generateAuthorizationHeaders();
}

protected RestTemplate setupRestTemplate() {
return new Foo(config, new ProxyConfigFactory().create()).createRestTemplate();
}

/**
* Before version 1.5.4. testName (in DefectDojo _test_type_) must be defectDojoScanName, afterwards, you can have somethings else
*/
protected ImportScanResponse createFindings(ScanFile scanFile, String endpoint, long lead, String currentDate, ScanType scanType, long testType, MultiValueMap<String, Object> options) {
var restTemplate = this.setupRestTemplate();
HttpHeaders headers = getDefectDojoAuthorizationHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
restTemplate.setMessageConverters(List.of(
new FormHttpMessageConverter(),
new ResourceHttpMessageConverter(),
new MappingJackson2HttpMessageConverter())
);

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

mvn.add("lead", Long.toString(lead));
mvn.add("scan_date", currentDate);
mvn.add("scan_type", scanType.getTestType());
mvn.add("close_old_findings", "true");
mvn.add("skip_duplicates", "false");
mvn.add("test_type", String.valueOf(testType));

for (String theKey : options.keySet()) {
mvn.remove(theKey);
}
mvn.addAll(options);

protected RestTemplate setupRestTemplate() {
return new Foo(config, new ProxyConfigFactory().create()).createRestTemplate();
}

/**
* Before version 1.5.4. testName (in DefectDojo _test_type_) must be defectDojoScanName, afterwards, you can have somethings else
*/
protected ImportScanResponse createFindings(ScanFile scanFile, String endpoint, long lead, String currentDate, ScanType scanType, long testType, MultiValueMap<String, Object> options) {
var restTemplate = this.setupRestTemplate();
HttpHeaders headers = getDefectDojoAuthorizationHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
restTemplate.setMessageConverters(List.of(
new FormHttpMessageConverter(),
new ResourceHttpMessageConverter(),
new MappingJackson2HttpMessageConverter())
);

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

mvn.add("lead", Long.toString(lead));
mvn.add("scan_date", currentDate);
mvn.add("scan_type", scanType.getTestType());
mvn.add("close_old_findings", "true");
mvn.add("skip_duplicates", "false");
mvn.add("test_type", String.valueOf(testType));

for (String theKey : options.keySet()) {
mvn.remove(theKey);
try {
ByteArrayResource contentsAsResource = new ByteArrayResource(scanFile.getContent().getBytes(StandardCharsets.UTF_8)) {
@Override
public String getFilename() {
return scanFile.getName();
}
mvn.addAll(options);

try {
ByteArrayResource contentsAsResource = new ByteArrayResource(scanFile.getContent().getBytes(StandardCharsets.UTF_8)) {
@Override
public String getFilename() {
return scanFile.getName();
}
};
};

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

var payload = new HttpEntity<>(mvn, headers);
var payload = new HttpEntity<>(mvn, headers);

return restTemplate.exchange(config.getUrl() + "/api/v2/" + endpoint + "/", HttpMethod.POST, payload, ImportScanResponse.class).getBody();
} catch (HttpClientErrorException e) {
throw new PersistenceException("Failed to attach findings to engagement.");
}
return restTemplate.exchange(config.getUrl() + "/api/v2/" + endpoint + "/", HttpMethod.POST, payload, ImportScanResponse.class).getBody();
} catch (HttpClientErrorException e) {
throw new PersistenceException("Failed to attach findings to engagement.");
}
}


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

return this.importScan(scanFile, engagementId, lead, currentDate, scanType, testType, additionalValues);
}
return this.importScan(scanFile, engagementId, lead, currentDate, scanType, testType, additionalValues);
}

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

return this.reimportScan(scanFile, testId, lead, currentDate, scanType, testType, additionalValues);
}
return this.reimportScan(scanFile, testId, lead, currentDate, scanType, testType, additionalValues);
}

//overloading with optional parameter
public ImportScanResponse importScan(ScanFile scanFile, long engagementId, long lead, String currentDate, ScanType scanType, long testType, LinkedMultiValueMap<String, Object> additionalValues) {
additionalValues.add("engagement", Long.toString(engagementId));
//overloading with optional parameter
public ImportScanResponse importScan(ScanFile scanFile, long engagementId, long lead, String currentDate, ScanType scanType, long testType, LinkedMultiValueMap<String, Object> additionalValues) {
additionalValues.add("engagement", Long.toString(engagementId));

return this.createFindings(scanFile, "import-scan", lead, currentDate, scanType, testType, additionalValues);
}
return this.createFindings(scanFile, "import-scan", lead, currentDate, scanType, testType, additionalValues);
}

public ImportScanResponse reimportScan(ScanFile scanFile, long testId, long lead, String currentDate, ScanType scanType, long testType, LinkedMultiValueMap<String, Object> additionalValues) {
additionalValues.add("test", Long.toString(testId));
public ImportScanResponse reimportScan(ScanFile scanFile, long testId, long lead, String currentDate, ScanType scanType, long testType, LinkedMultiValueMap<String, Object> additionalValues) {
additionalValues.add("test", Long.toString(testId));

return this.createFindings(scanFile, "reimport-scan", lead, currentDate, scanType, testType, additionalValues);
}
return this.createFindings(scanFile, "reimport-scan", lead, currentDate, scanType, testType, additionalValues);
}

@Data
public static class ImportScanResponse {
@JsonProperty
protected Boolean verified;
@Data
public static class ImportScanResponse {
@JsonProperty
protected Boolean verified;

@JsonProperty
protected Boolean active;
@JsonProperty
protected Boolean active;

@JsonProperty("test")
protected long testId;
}
@JsonProperty("test")
protected long testId;
}
}