Search in sources :

Example 1 with ProxyServerSelector

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;
}
Also used : Arrays(java.util.Arrays) Properties(java.util.Properties) Logger(org.slf4j.Logger) Realm(org.asynchttpclient.Realm) ProxyServerSelector(org.asynchttpclient.proxy.ProxyServerSelector) Request(org.asynchttpclient.Request) URISyntaxException(java.net.URISyntaxException) LoggerFactory(org.slf4j.LoggerFactory) InetSocketAddress(java.net.InetSocketAddress) ProxyServer(org.asynchttpclient.proxy.ProxyServer) ArrayList(java.util.ArrayList) ProxySelector(java.net.ProxySelector) List(java.util.List) Dsl(org.asynchttpclient.Dsl) AsyncHttpClientConfig(org.asynchttpclient.AsyncHttpClientConfig) Proxy(java.net.Proxy) Uri(org.asynchttpclient.uri.Uri) URI(java.net.URI) Realm(org.asynchttpclient.Realm) ProxyServer(org.asynchttpclient.proxy.ProxyServer)

Example 2 with ProxyServerSelector

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;
            }
        }
    };
}
Also used : Proxy(java.net.Proxy) ProxyServerSelector(org.asynchttpclient.proxy.ProxyServerSelector) InetSocketAddress(java.net.InetSocketAddress) URISyntaxException(java.net.URISyntaxException) Uri(org.asynchttpclient.uri.Uri) URI(java.net.URI)

Aggregations

InetSocketAddress (java.net.InetSocketAddress)2 Proxy (java.net.Proxy)2 URI (java.net.URI)2 URISyntaxException (java.net.URISyntaxException)2 ProxyServerSelector (org.asynchttpclient.proxy.ProxyServerSelector)2 Uri (org.asynchttpclient.uri.Uri)2 ProxySelector (java.net.ProxySelector)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Properties (java.util.Properties)1 AsyncHttpClientConfig (org.asynchttpclient.AsyncHttpClientConfig)1 Dsl (org.asynchttpclient.Dsl)1 Realm (org.asynchttpclient.Realm)1 Request (org.asynchttpclient.Request)1 ProxyServer (org.asynchttpclient.proxy.ProxyServer)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1