// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.ecos.proxy;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.ProxyHost;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.net.proxy.IProxyData;
import org.eclipse.core.net.proxy.IProxyService;
import org.talend.dataprofiler.ecos.EcosPlugin;
/**
* DOC bZhou class global comment. Detailled comment
*/
public final class EcosystemProxyAdapter {
private static Logger log = Logger.getLogger(EcosystemProxyAdapter.class);
private EcosystemProxyAdapter() {
}
/**
* DOC bZhou Comment method "adapt".
*
* @param httpclient
* @param url
*/
public static void adapt(HttpClient httpclient, String url) {
IProxyService proxyService = EcosPlugin.getDefault().getProxyService();
IProxyData proxyData = null;
try {
IProxyData[] proxyDatas = proxyService.select(new URI(url));
if (proxyDatas != null && proxyDatas.length > 0) {
proxyData = proxyDatas[0];
}
} catch (URISyntaxException e) {
log.error(e, e);
}
if (proxyData == null) {
proxyData = proxyService.getProxyData(IProxyData.HTTP_PROXY_TYPE);
}
if (proxyData != null & StringUtils.isNotEmpty(proxyData.getHost())) {
// use proxy to connect
ProxyHost host = new ProxyHost(proxyData.getHost(), proxyData.getPort());
httpclient.getHostConfiguration().setProxyHost(host);
httpclient.getParams().setAuthenticationPreemptive(true);
String userId = proxyData.getUserId();
if (StringUtils.isNotEmpty(userId)) {
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(userId, proxyData.getPassword());
httpclient.getState().setProxyCredentials(AuthScope.ANY, credentials);
}
}
}
}