package org.cloudsmith.geppetto.injectable.eclipse.impl; import javax.inject.Named; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.HttpClient; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.cloudsmith.geppetto.injectable.eclipse.Activator; import org.eclipse.core.net.proxy.IProxyData; import com.google.inject.Inject; import com.google.inject.Provider; public class EclipseHttpClientProvider implements Provider<HttpClient> { @Inject(optional = true) @Named(CoreConnectionPNames.CONNECTION_TIMEOUT) private Integer connectonTimeout; @Inject(optional = true) @Named(CoreConnectionPNames.SO_TIMEOUT) private Integer soTimeout; @Inject(optional = true) private SSLSocketFactory sslSocketFactory; @Override public HttpClient get() { HttpParams params = new BasicHttpParams(); if(connectonTimeout != null) HttpConnectionParams.setConnectionTimeout(params, connectonTimeout.intValue()); if(soTimeout != null) HttpConnectionParams.setSoTimeout(params, soTimeout.intValue()); DefaultHttpClient httpClient = new DefaultHttpClient(params); final SchemeRegistry schemeRegistry = httpClient.getConnectionManager().getSchemeRegistry(); if(sslSocketFactory != null) schemeRegistry.register(new Scheme("https", 443, sslSocketFactory)); httpClient.setRoutePlanner(new ProxiedRoutePlanner(schemeRegistry)); for(IProxyData proxyData : Activator.getInstance().getProxyService().getProxyData()) { String user = proxyData.getUserId(); String pwd = proxyData.getPassword(); if(user != null || pwd != null) httpClient.getCredentialsProvider().setCredentials( new AuthScope(proxyData.getHost(), proxyData.getPort()), new UsernamePasswordCredentials(user, pwd)); } return httpClient; } }