package org.jenkinsci.plugins.qywechat; import com.arronlong.httpclientutil.HttpClientUtil; import com.arronlong.httpclientutil.common.HttpConfig; import com.arronlong.httpclientutil.exception.HttpProcessException; import org.jenkinsci.plugins.qywechat.model.NotificationConfig; import hudson.EnvVars; import hudson.util.Secret; import jenkins.model.Jenkins; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.HttpClients; /** * 工具类 * @author jiaju */ public class NotificationUtil { /** * 推送信息 * @param url * @param data */ public static String push(String url, String data, NotificationConfig buildConfig) throws HttpProcessException { HttpConfig httpConfig; //使用代理请求 if(buildConfig.useProxy){ HttpClient httpClient; HttpHost proxy = new HttpHost(buildConfig.proxyHost, buildConfig.proxyPort); //用户密码 if(StringUtils.isNotEmpty(buildConfig.proxyUsername) && buildConfig.proxyPassword != null){ // 设置认证 CredentialsProvider provider = new BasicCredentialsProvider(); provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(buildConfig.proxyUsername, Secret.toString(buildConfig.proxyPassword))); httpClient = HttpClients.custom().setDefaultCredentialsProvider(provider).setProxy(proxy).build(); }else{ httpClient = HttpClients.custom().setProxy(proxy).build(); } //代理请求 httpConfig = HttpConfig.custom().client(httpClient).url(url).json(data).encoding("utf-8"); }else{ //普通请求 httpConfig = HttpConfig.custom().url(url).json(data).encoding("utf-8"); } String result = HttpClientUtil.post(httpConfig); return result; } /** * 获取Jenkins地址 * @return */ public static String getJenkinsUrl() { String jenkinsUrl = Jenkins.getInstance().getRootUrl(); if (jenkinsUrl != null && jenkinsUrl.length() > 0 && !jenkinsUrl.endsWith("/")) { jenkinsUrl = jenkinsUrl + "/"; } return jenkinsUrl; } /** * 替换多值环境变量 * @param val * @param envVars * @return */ public static String replaceMultipleEnvValue(String val, EnvVars envVars) { String []vals = val.split(","); StringBuilder builder = new StringBuilder(); for(String v : vals){ v = replaceEnvValue(v, envVars); builder.append(v); builder.append(","); } if(builder.length()>0){ builder.deleteCharAt(builder.length()-1); } return builder.toString(); } /** * 替换环境变量 * @param key * @param envVars * @return */ public static String replaceEnvValue(String key, EnvVars envVars) { String val = key; if (key.contains("$")){ key = key.trim(); key = key.replaceFirst("\\$", ""); if(key.startsWith("{") && key.endsWith("}")){ key = key.substring(1, key.length()-2); } if(envVars.containsKey(key)){ return envVars.get(key); } return val; }else { return key; } } }