Skip to content

Commit b378f13

Browse files
committed
#36 Extract duplicated code to create rest template
Signed-off-by: Sven Strittmatter <sven.strittmatter@iteratec.com>
1 parent 29f1bd5 commit b378f13

File tree

3 files changed

+43
-72
lines changed

3 files changed

+43
-72
lines changed

src/main/java/io/securecodebox/persistence/defectdojo/http/Foo.java

+39
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,17 @@
22

33
import io.securecodebox.persistence.defectdojo.config.Config;
44
import lombok.NonNull;
5+
import org.apache.http.HttpHost;
6+
import org.apache.http.auth.AuthScope;
7+
import org.apache.http.auth.UsernamePasswordCredentials;
8+
import org.apache.http.client.CredentialsProvider;
9+
import org.apache.http.impl.client.BasicCredentialsProvider;
10+
import org.apache.http.impl.client.CloseableHttpClient;
11+
import org.apache.http.impl.client.HttpClientBuilder;
12+
import org.apache.http.impl.client.ProxyAuthenticationStrategy;
513
import org.springframework.http.HttpHeaders;
14+
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
15+
import org.springframework.web.client.RestTemplate;
616

717
import java.nio.charset.StandardCharsets;
818
import java.util.Base64;
@@ -32,4 +42,33 @@ public HttpHeaders getDefectDojoAuthorizationHeaders() {
3242

3343
return headers;
3444
}
45+
46+
public RestTemplate setupRestTemplate() {
47+
RestTemplate restTemplate;
48+
49+
if (System.getProperty("http.proxyUser") != null && System.getProperty("http.proxyPassword") != null) {
50+
// Configuring Proxy Authentication explicitly as it isn't done by default for spring rest templates :(
51+
CredentialsProvider credsProvider = new BasicCredentialsProvider();
52+
credsProvider.setCredentials(
53+
new AuthScope(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))),
54+
new UsernamePasswordCredentials(System.getProperty("http.proxyUser"), System.getProperty("http.proxyPassword"))
55+
);
56+
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
57+
58+
clientBuilder.useSystemProperties();
59+
clientBuilder.setProxy(new HttpHost(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))));
60+
clientBuilder.setDefaultCredentialsProvider(credsProvider);
61+
clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
62+
63+
CloseableHttpClient client = clientBuilder.build();
64+
65+
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
66+
factory.setHttpClient(client);
67+
restTemplate = new RestTemplate(factory);
68+
} else {
69+
restTemplate = new RestTemplate();
70+
}
71+
72+
return restTemplate;
73+
}
3574
}

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

+3-37
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,13 @@
1414
import io.securecodebox.persistence.defectdojo.exception.LoopException;
1515
import io.securecodebox.persistence.defectdojo.http.Foo;
1616
import io.securecodebox.persistence.defectdojo.model.BaseModel;
17-
import io.securecodebox.persistence.defectdojo.model.Response;
1817
import io.securecodebox.persistence.defectdojo.model.Engagement;
19-
import org.apache.http.HttpHost;
20-
import org.apache.http.auth.AuthScope;
21-
import org.apache.http.auth.UsernamePasswordCredentials;
22-
import org.apache.http.client.CredentialsProvider;
23-
import org.apache.http.impl.client.BasicCredentialsProvider;
24-
import org.apache.http.impl.client.CloseableHttpClient;
25-
import org.apache.http.impl.client.HttpClientBuilder;
26-
import org.apache.http.impl.client.ProxyAuthenticationStrategy;
18+
import io.securecodebox.persistence.defectdojo.model.Response;
19+
import lombok.Getter;
2720
import org.springframework.http.HttpEntity;
2821
import org.springframework.http.HttpHeaders;
2922
import org.springframework.http.HttpMethod;
3023
import org.springframework.http.ResponseEntity;
31-
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
3224
import org.springframework.http.converter.FormHttpMessageConverter;
3325
import org.springframework.http.converter.ResourceHttpMessageConverter;
3426
import org.springframework.http.converter.StringHttpMessageConverter;
@@ -39,9 +31,7 @@
3931

4032
import java.net.URI;
4133
import java.net.URISyntaxException;
42-
import java.nio.charset.StandardCharsets;
4334
import java.util.*;
44-
import lombok.Getter;
4535

4636
// FIXME: Should be package private bc implementation detail.
4737
abstract public class GenericDefectDojoService<T extends BaseModel> {
@@ -80,31 +70,7 @@ private HttpHeaders getDefectDojoAuthorizationHeaders() {
8070
}
8171

8272
private RestTemplate setupRestTemplate() {
83-
RestTemplate restTemplate;
84-
85-
if (System.getProperty("http.proxyUser") != null && System.getProperty("http.proxyPassword") != null) {
86-
// Configuring Proxy Authentication explicitly as it isn't done by default for spring rest templates :(
87-
CredentialsProvider credsProvider = new BasicCredentialsProvider();
88-
credsProvider.setCredentials(
89-
new AuthScope(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))),
90-
new UsernamePasswordCredentials(System.getProperty("http.proxyUser"), System.getProperty("http.proxyPassword"))
91-
);
92-
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
93-
94-
clientBuilder.useSystemProperties();
95-
clientBuilder.setProxy(new HttpHost(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))));
96-
clientBuilder.setDefaultCredentialsProvider(credsProvider);
97-
clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
98-
99-
CloseableHttpClient client = clientBuilder.build();
100-
101-
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
102-
factory.setHttpClient(client);
103-
restTemplate = new RestTemplate(factory);
104-
} else {
105-
restTemplate = new RestTemplate();
106-
}
107-
73+
RestTemplate restTemplate = new Foo(config).setupRestTemplate();
10874
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
10975
converter.setObjectMapper(this.objectMapper);
11076
restTemplate.setMessageConverters(List.of(

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

+1-35
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,11 @@
2424
import io.securecodebox.persistence.defectdojo.http.Foo;
2525
import io.securecodebox.persistence.defectdojo.model.ScanFile;
2626
import lombok.Data;
27-
import org.apache.http.HttpHost;
28-
import org.apache.http.auth.AuthScope;
29-
import org.apache.http.auth.UsernamePasswordCredentials;
30-
import org.apache.http.client.CredentialsProvider;
31-
import org.apache.http.impl.client.BasicCredentialsProvider;
32-
import org.apache.http.impl.client.CloseableHttpClient;
33-
import org.apache.http.impl.client.HttpClientBuilder;
34-
import org.apache.http.impl.client.ProxyAuthenticationStrategy;
3527
import org.springframework.core.io.ByteArrayResource;
3628
import org.springframework.http.HttpEntity;
3729
import org.springframework.http.HttpHeaders;
3830
import org.springframework.http.HttpMethod;
3931
import org.springframework.http.MediaType;
40-
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
4132
import org.springframework.http.converter.FormHttpMessageConverter;
4233
import org.springframework.http.converter.ResourceHttpMessageConverter;
4334
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
@@ -75,32 +66,7 @@ private HttpHeaders getDefectDojoAuthorizationHeaders() {
7566
}
7667

7768
protected RestTemplate setupRestTemplate() {
78-
RestTemplate restTemplate;
79-
80-
if (System.getProperty("http.proxyUser") != null && System.getProperty("http.proxyPassword") != null) {
81-
// Configuring Proxy Authentication explicitly as it isn't done by default for spring rest templates :(
82-
CredentialsProvider credsProvider = new BasicCredentialsProvider();
83-
credsProvider.setCredentials(
84-
new AuthScope(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))),
85-
new UsernamePasswordCredentials(System.getProperty("http.proxyUser"), System.getProperty("http.proxyPassword"))
86-
);
87-
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
88-
89-
clientBuilder.useSystemProperties();
90-
clientBuilder.setProxy(new HttpHost(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))));
91-
clientBuilder.setDefaultCredentialsProvider(credsProvider);
92-
clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
93-
94-
CloseableHttpClient client = clientBuilder.build();
95-
96-
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
97-
factory.setHttpClient(client);
98-
restTemplate = new RestTemplate(factory);
99-
} else {
100-
restTemplate = new RestTemplate();
101-
}
102-
103-
return restTemplate;
69+
return new Foo(config).setupRestTemplate();
10470
}
10571

10672
/**

0 commit comments

Comments
 (0)