diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/pom.xml b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/pom.xml
similarity index 96%
rename from dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/pom.xml
rename to dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/pom.xml
index 40188e3969..51cba27054 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/pom.xml
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/pom.xml
@@ -9,7 +9,7 @@
4.0.0
- dolphinscheduler-alert-sms
+ dolphinscheduler-alert-http
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannel.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java
similarity index 60%
rename from dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannel.java
rename to dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java
index 2e0210b044..9707d76e62 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannel.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannel.java
@@ -15,19 +15,28 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.plugin.alert.sms;
+package org.apache.dolphinscheduler.plugin.alert.http;
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
+import org.apache.dolphinscheduler.spi.alert.AlertData;
import org.apache.dolphinscheduler.spi.alert.AlertInfo;
import org.apache.dolphinscheduler.spi.alert.AlertResult;
+import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer;
+
+import java.util.Map;
/**
- * sms alert channel,use sms message to seed the alertInfo
+ * http alert channel,use sms message to seed the alertInfo
*/
-public class SMSAlertChannel implements AlertChannel {
+public class HttpAlertChannel implements AlertChannel {
@Override
- public AlertResult process(AlertInfo info) {
- return null;
+ public AlertResult process(AlertInfo alertInfo) {
+
+ AlertData alertData = alertInfo.getAlertData();
+ String alertParams = alertInfo.getAlertParams();
+ Map paramsMap = PluginParamsTransfer.getPluginParamsMap(alertParams);
+
+ return new HttpSender(paramsMap).send(alertData.getContent());
}
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactory.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactory.java
new file mode 100644
index 0000000000..2e78056225
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertChannelFactory.java
@@ -0,0 +1,78 @@
+/*
+ * 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 org.apache.dolphinscheduler.spi.alert.AlertChannel;
+import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
+import org.apache.dolphinscheduler.spi.params.InputParam;
+import org.apache.dolphinscheduler.spi.params.base.PluginParams;
+import org.apache.dolphinscheduler.spi.params.base.Validate;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * http alert factory
+ */
+public class HttpAlertChannelFactory implements AlertChannelFactory {
+ @Override
+ public String getName() {
+ return "http alert";
+ }
+
+ @Override
+ public List getParams() {
+
+ InputParam url = InputParam.newBuilder(HttpAlertConstants.URL, HttpAlertConstants.URL)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+
+ InputParam headerParams = InputParam.newBuilder(HttpAlertConstants.HEADER_PARAMS, HttpAlertConstants.HEADER_PARAMS)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+
+ InputParam bodyParams = InputParam.newBuilder(HttpAlertConstants.BODY_PARAMS, HttpAlertConstants.BODY_PARAMS)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+
+ InputParam contentField = InputParam.newBuilder(HttpAlertConstants.CONTENT_FIELD, HttpAlertConstants.CONTENT_FIELD)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+
+ InputParam requestType = InputParam.newBuilder(HttpAlertConstants.REQUEST_TYPE, HttpAlertConstants.REQUEST_TYPE)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+
+ return Arrays.asList(url, requestType, headerParams, bodyParams, contentField);
+ }
+
+ @Override
+ public AlertChannel create() {
+ return new HttpAlertChannel();
+ }
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertConstants.java
similarity index 68%
rename from dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSSender.java
rename to dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertConstants.java
index ccfc0597ed..5f3b1c2a42 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSSender.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertConstants.java
@@ -15,20 +15,19 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.plugin.alert.sms;
+package org.apache.dolphinscheduler.plugin.alert.http;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+public class HttpAlertConstants {
-/**
- * send message
- */
-public class SMSSender {
- public static final Logger logger = LoggerFactory.getLogger(SMSSender.class);
+ public static final String URL = "url";
+
+ public static final String HEADER_PARAMS = "headerParams";
+
+ public static final String BODY_PARAMS = "bodyParams";
+ public static final String CONTENT_FIELD = "contentField";
- public void send(){
+ public static final String REQUEST_TYPE = "requestType";
- }
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertPlugin.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertPlugin.java
similarity index 83%
rename from dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertPlugin.java
rename to dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertPlugin.java
index 55dae28981..c3ab1a1189 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertPlugin.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpAlertPlugin.java
@@ -15,19 +15,19 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.plugin.alert.sms;
+package org.apache.dolphinscheduler.plugin.alert.http;
import com.google.common.collect.ImmutableList;
import org.apache.dolphinscheduler.spi.DolphinSchedulerPlugin;
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
/**
- * sms alertPlugins
+ * http alertPlugins
*/
-public class SMSAlertPlugin implements DolphinSchedulerPlugin {
+public class HttpAlertPlugin implements DolphinSchedulerPlugin {
@Override
public Iterable getAlertChannelFactorys() {
- return ImmutableList.of(new SMSAlertChannelFactory());
+ return ImmutableList.of(new HttpAlertChannelFactory());
}
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSender.java
new file mode 100644
index 0000000000..eb71ec3a26
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-http/src/main/java/org/apache/dolphinscheduler/plugin/alert/http/HttpSender.java
@@ -0,0 +1,170 @@
+/*
+ * 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 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 map = JSONUtils.parseObject(headerParams, HashMap.class);
+ for (Map.Entry 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();
+ }
+
+
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannelFactory.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannelFactory.java
deleted file mode 100644
index ac179ce591..0000000000
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertChannelFactory.java
+++ /dev/null
@@ -1,44 +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.sms;
-
-import org.apache.dolphinscheduler.spi.alert.AlertChannel;
-import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
-import org.apache.dolphinscheduler.spi.params.base.PluginParams;
-
-import java.util.List;
-
-/**
- * sms alert factory
- */
-public class SMSAlertChannelFactory implements AlertChannelFactory {
- @Override
- public String getName() {
- return null;
- }
-
- @Override
- public List getParams() {
- return null;
- }
-
- @Override
- public AlertChannel create() {
- return null;
- }
-}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertConstants.java
deleted file mode 100644
index bf782a8e54..0000000000
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertConstants.java
+++ /dev/null
@@ -1,21 +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.sms;
-
-public class SMSAlertConstants {
-}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertParamsConstants.java
deleted file mode 100644
index c0713d9de9..0000000000
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-sms/src/main/java/org/apache/dolphinscheduler/plugin/alert/sms/SMSAlertParamsConstants.java
+++ /dev/null
@@ -1,21 +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.sms;
-
-public class SMSAlertParamsConstants {
-}
diff --git a/dolphinscheduler-alert-plugin/pom.xml b/dolphinscheduler-alert-plugin/pom.xml
index 9713198ce7..707f0ceafb 100644
--- a/dolphinscheduler-alert-plugin/pom.xml
+++ b/dolphinscheduler-alert-plugin/pom.xml
@@ -34,7 +34,7 @@
dolphinscheduler-alert-wechat
dolphinscheduler-alert-dingtalk
dolphinscheduler-alert-script
- dolphinscheduler-alert-sms
+ dolphinscheduler-alert-http