|
@@ -1,170 +0,0 @@
|
|
|
-/*
|
|
|
- * Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
- * contributor license agreements. See the NOTICE file distributed with
|
|
|
- * this work for additional information regarding copyright ownership.
|
|
|
- * The ASF licenses this file to You under the Apache License, Version 2.0
|
|
|
- * (the "License"); you may not use this file except in compliance with
|
|
|
- * the License. You may obtain a copy of the License at
|
|
|
- *
|
|
|
- * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
- *
|
|
|
- * Unless required by applicable law or agreed to in writing, software
|
|
|
- * distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
- * See the License for the specific language governing permissions and
|
|
|
- * limitations under the License.
|
|
|
- */
|
|
|
-
|
|
|
-package org.apache.dolphinscheduler.plugin.alert.http;
|
|
|
-
|
|
|
-import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
-import org.apache.dolphinscheduler.spi.alert.AlertResult;
|
|
|
-import org.apache.dolphinscheduler.spi.utils.JSONUtils;
|
|
|
-import org.apache.dolphinscheduler.spi.utils.StringUtils;
|
|
|
-import org.apache.http.HttpEntity;
|
|
|
-import org.apache.http.client.methods.CloseableHttpResponse;
|
|
|
-import org.apache.http.client.methods.HttpGet;
|
|
|
-import org.apache.http.client.methods.HttpPost;
|
|
|
-import org.apache.http.client.methods.HttpRequestBase;
|
|
|
-import org.apache.http.entity.StringEntity;
|
|
|
-import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
-import org.apache.http.impl.client.HttpClientBuilder;
|
|
|
-import org.apache.http.util.EntityUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-
|
|
|
-/**
|
|
|
- *http send message
|
|
|
- */
|
|
|
-public class HttpSender {
|
|
|
-
|
|
|
- public static final Logger logger = LoggerFactory.getLogger(HttpSender.class);
|
|
|
-
|
|
|
- private String url;
|
|
|
-
|
|
|
- private String headerParams;
|
|
|
-
|
|
|
- private String bodyParams;
|
|
|
-
|
|
|
- private String contentField;
|
|
|
-
|
|
|
- private String requestType;
|
|
|
-
|
|
|
- private HttpRequestBase httpRequest;
|
|
|
-
|
|
|
-
|
|
|
- private static final String URL_SPLICE_CHAR = "?";
|
|
|
-
|
|
|
- /**
|
|
|
- * request type post
|
|
|
- */
|
|
|
- private static final String REQUEST_TYPE_POST = "POST";
|
|
|
-
|
|
|
- /**
|
|
|
- * request type get
|
|
|
- */
|
|
|
- private static final String REQUEST_TYPE_GET = "GET";
|
|
|
-
|
|
|
- private static final String DEFAULT_CHARSET = "utf-8";
|
|
|
-
|
|
|
- public HttpSender(Map<String, String> paramsMap){
|
|
|
-
|
|
|
- url = paramsMap.get(HttpAlertConstants.URL);
|
|
|
- headerParams = paramsMap.get(HttpAlertConstants.HEADER_PARAMS);
|
|
|
- bodyParams = paramsMap.get(HttpAlertConstants.BODY_PARAMS);
|
|
|
- contentField = paramsMap.get(HttpAlertConstants.CONTENT_FIELD);
|
|
|
- requestType = paramsMap.get(HttpAlertConstants.REQUEST_TYPE);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public AlertResult send(String msg) {
|
|
|
-
|
|
|
- AlertResult alertResult = new AlertResult();
|
|
|
-
|
|
|
- getHttpRequest(msg);
|
|
|
-
|
|
|
- if (httpRequest == null){
|
|
|
- alertResult.setStatus("false");
|
|
|
- alertResult.setMessage("Request types are not supported");
|
|
|
- return alertResult;
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- CloseableHttpClient httpClient = HttpClientBuilder.create().build();
|
|
|
- CloseableHttpResponse response = httpClient.execute(httpRequest);
|
|
|
- HttpEntity entity = response.getEntity();
|
|
|
- String resp = EntityUtils.toString(entity, DEFAULT_CHARSET);
|
|
|
- alertResult.setStatus("true");
|
|
|
- alertResult.setMessage(resp);
|
|
|
- }catch (Exception e) {
|
|
|
- logger.error("send sms alert msg exception : {}", e.getMessage());
|
|
|
- alertResult.setStatus("false");
|
|
|
- alertResult.setMessage("send http request alert fail.");
|
|
|
- }
|
|
|
-
|
|
|
- return alertResult;
|
|
|
- }
|
|
|
-
|
|
|
- private void getHttpRequest(String msg){
|
|
|
-
|
|
|
- if (REQUEST_TYPE_POST.equals(requestType)){
|
|
|
- httpRequest = new HttpPost(url);
|
|
|
- //POST request add param in request body
|
|
|
- setMsgInRequestBody(msg);
|
|
|
- }else if (REQUEST_TYPE_GET.equals(requestType)){
|
|
|
- //GET request add param in url
|
|
|
- setMsgInUrl(msg);
|
|
|
- httpRequest = new HttpGet(url);
|
|
|
- }
|
|
|
- setHeader();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * add msg param in url
|
|
|
- * @param msg
|
|
|
- */
|
|
|
- private void setMsgInUrl(String msg) {
|
|
|
-
|
|
|
- if (StringUtils.isNotBlank(contentField)){
|
|
|
- String type = "&";
|
|
|
- //check splice char is & or ?
|
|
|
- if (!url.contains(URL_SPLICE_CHAR)){
|
|
|
- type = URL_SPLICE_CHAR;
|
|
|
- }
|
|
|
- url = String.format("%s%s%s=%s", url, type, contentField, msg);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * set header params
|
|
|
- */
|
|
|
- private void setHeader(){
|
|
|
-
|
|
|
- if (httpRequest == null){
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- HashMap<String,Object> map = JSONUtils.parseObject(headerParams, HashMap.class);
|
|
|
- for (Map.Entry<String,Object> entry : map.entrySet()) {
|
|
|
- httpRequest.setHeader(entry.getKey(), String.valueOf(entry.getValue()));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- *set body params
|
|
|
- * @param msg
|
|
|
- * @return
|
|
|
- */
|
|
|
- private String setMsgInRequestBody(String msg){
|
|
|
- ObjectNode objectNode = JSONUtils.parseObject(bodyParams);
|
|
|
- //set msg content field
|
|
|
- objectNode.put(contentField,msg);
|
|
|
- return objectNode.toString();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-}
|