Skip to content

Commit

Permalink
refactor to explicitly set proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
nixj14 authored and Luke-Sikina committed Aug 24, 2024
1 parent 05c6402 commit cc4e84c
Showing 1 changed file with 28 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package edu.harvard.hms.dbmi.avillach.auth.utils;


import org.apache.hc.client5.http.auth.AuthScope;
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.core5.http.HttpHost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -19,6 +22,12 @@ public class RestClientConfig {

private static final Logger LOG = LoggerFactory.getLogger(RestClientConfig.class);

@Value("${http.proxyHost:}")
private String proxyHost;

@Value("${http.proxyPort:}")
private int proxyPort;

@Value("${http.proxyUser:}")
private String proxyUser;

Expand All @@ -27,17 +36,26 @@ public class RestClientConfig {

@Bean
public HttpClient getHttpClient() {
if (!StringUtils.hasLength(proxyUser)) {
if (!StringUtils.hasLength(proxyHost)) {
return HttpClients.createDefault();
} else if (!StringUtils.hasLength(proxyUser)) {
LOG.info("Utilizing unauthenticated proxy: host={}", proxyHost);
return HttpClients.custom()
.setProxy(new HttpHost(proxyHost, proxyPort))
.build();
} else {
LOG.info("Utilizing authenticated proxy: host={}, user={}", proxyHost, proxyUser);

BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
new AuthScope(proxyHost, proxyPort),
new UsernamePasswordCredentials(proxyUser, proxyPassword.toCharArray()));

return HttpClients.custom()
.setDefaultCredentialsProvider(credentialsProvider)
.setProxy(new HttpHost(proxyHost, proxyPort))
.build();
}
LOG.info("Found proxy user {}, will configure proxy", proxyUser);
PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
manager.setMaxTotal(100);
return HttpClients
.custom()
.setConnectionManager(manager)
.useSystemProperties()
.build();
}

@Bean
Expand Down

0 comments on commit cc4e84c

Please sign in to comment.