use of org.asynchttpclient.proxy.ProxyServerSelector in project async-http-client by AsyncHttpClient.
the class ProxyUtils method createProxyServerSelector.
/**
* Creates a proxy server instance from the given properties.
* Currently the default http.* proxy properties are supported as well as properties specific for AHC.
*
* @param properties the properties to evaluate. Must not be null.
* @return a ProxyServer instance or null, if no valid properties were set.
* @see <a href="https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html">Networking Properties</a>
* @see #PROXY_HOST
* @see #PROXY_PORT
* @see #PROXY_NONPROXYHOSTS
*/
public static ProxyServerSelector createProxyServerSelector(Properties properties) {
String host = properties.getProperty(PROXY_HOST);
if (host != null) {
int port = Integer.valueOf(properties.getProperty(PROXY_PORT, "80"));
String principal = properties.getProperty(PROXY_USER);
String password = properties.getProperty(PROXY_PASSWORD);
Realm realm = null;
if (principal != null) {
realm = basicAuthRealm(principal, password).build();
}
ProxyServer.Builder proxyServer = proxyServer(host, port).setRealm(realm);
String nonProxyHosts = properties.getProperty(PROXY_NONPROXYHOSTS);
if (nonProxyHosts != null) {
proxyServer.setNonProxyHosts(new ArrayList<>(Arrays.asList(nonProxyHosts.split("\\|"))));
}
ProxyServer proxy = proxyServer.build();
return uri -> proxy;
}
return ProxyServerSelector.NO_PROXY_SELECTOR;
}
use of org.asynchttpclient.proxy.ProxyServerSelector in project async-http-client by AsyncHttpClient.
the class ProxyUtils method createProxyServerSelector.
/**
* Create a proxy server selector based on the passed in JDK proxy selector.
*
* @param proxySelector The proxy selector to use. Must not be null.
* @return The proxy server selector.
*/
public static ProxyServerSelector createProxyServerSelector(final ProxySelector proxySelector) {
return new ProxyServerSelector() {
public ProxyServer select(Uri uri) {
try {
URI javaUri = uri.toJavaNetURI();
List<Proxy> proxies = proxySelector.select(javaUri);
if (proxies != null) {
// Loop through them until we find one that we know how to use
for (Proxy proxy : proxies) {
switch(proxy.type()) {
case HTTP:
if (!(proxy.address() instanceof InetSocketAddress)) {
logger.warn("Don't know how to connect to address " + proxy.address());
return null;
} else {
InetSocketAddress address = (InetSocketAddress) proxy.address();
return proxyServer(address.getHostName(), address.getPort()).build();
}
case DIRECT:
return null;
default:
logger.warn("ProxySelector returned proxy type that we don't know how to use: " + proxy.type());
break;
}
}
}
return null;
} catch (URISyntaxException e) {
logger.warn(uri + " couldn't be turned into a java.net.URI", e);
return null;
}
}
};
}
Aggregations