View Javadoc

1   package com.atlassian.httpclient.apache.httpcomponents.proxy;
2   
3   import com.atlassian.fugue.Option;
4   import com.atlassian.httpclient.api.factory.HttpClientOptions;
5   import com.google.common.collect.Lists;
6   import org.apache.http.HttpHost;
7   
8   import static com.atlassian.httpclient.apache.httpcomponents.proxy.ProxyConfig.AuthenticationInfo;
9   
10  public class ProxyConfigFactory {
11      public static Option<HttpHost> getProxyHost(final HttpClientOptions options) {
12          return getProxyConfig(options).fold(Option::none, ProxyConfig::getProxyHost);
13      }
14  
15      public static Iterable<AuthenticationInfo> getProxyAuthentication(final HttpClientOptions options) {
16          return getProxyConfig(options).fold(Lists::newLinkedList, ProxyConfig::getAuthenticationInfo);
17      }
18  
19      public static Option<ProxyConfig> getProxyConfig(final HttpClientOptions options) {
20          final Option<ProxyConfig> config;
21          switch (options.getProxyOptions().getProxyMode()) {
22              case SYSTEM_PROPERTIES:
23                  config = Option.some(new SystemPropertiesProxyConfig());
24                  break;
25              case CONFIGURED:
26                  config = Option.some(new ProvidedProxyConfig(
27                          options.getProxyOptions().getProxyHosts(), options.getProxyOptions().getNonProxyHosts()));
28                  break;
29              default:
30                  config = Option.none();
31          }
32          return config;
33      }
34  }