From 528920379d8c20c38faa786c83804b5555a356ed Mon Sep 17 00:00:00 2001 From: KFCFans Date: Sat, 14 Nov 2020 11:18:04 +0800 Subject: [PATCH] feat: support webhook #79 --- .../powerjob/common/utils/HttpUtils.java | 12 +++--- .../alarm/impl/WebHookAlarmService.java | 42 +++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/alarm/impl/WebHookAlarmService.java diff --git a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/HttpUtils.java b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/HttpUtils.java index 21664614..64f499f7 100644 --- a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/HttpUtils.java +++ b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/HttpUtils.java @@ -1,9 +1,6 @@ package com.github.kfcfans.powerjob.common.utils; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; +import okhttp3.*; import java.io.IOException; import java.util.Objects; @@ -34,7 +31,12 @@ public class HttpUtils { .build(); try (Response response = client.newCall(request).execute()) { if (response.code() == HTTP_SUCCESS_CODE) { - return Objects.requireNonNull(response.body()).string(); + ResponseBody body = response.body(); + if (body == null) { + return null; + }else { + return body.string(); + } } } return null; diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/alarm/impl/WebHookAlarmService.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/alarm/impl/WebHookAlarmService.java new file mode 100644 index 00000000..e0c32cec --- /dev/null +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/alarm/impl/WebHookAlarmService.java @@ -0,0 +1,42 @@ +package com.github.kfcfans.powerjob.server.service.alarm.impl; + +import com.github.kfcfans.powerjob.common.utils.HttpUtils; +import com.github.kfcfans.powerjob.server.persistence.core.model.UserInfoDO; +import com.github.kfcfans.powerjob.server.service.alarm.Alarm; +import com.github.kfcfans.powerjob.server.service.alarm.Alarmable; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.List; + +/** + * http 回调报警 + * + * @author tjq + * @since 11/14/20 + */ +@Slf4j +@Service +public class WebHookAlarmService implements Alarmable { + + @Override + public void onFailed(Alarm alarm, List targetUserList) { + if (CollectionUtils.isEmpty(targetUserList)) { + return; + } + targetUserList.forEach(user -> { + String webHook = user.getWebHook(); + if (StringUtils.isEmpty(webHook)) { + return; + } + try { + String response = HttpUtils.get(webHook); + log.info("[WebHookAlarmService] invoke webhook[url={}] successfully, response is {}", webHook, response); + }catch (Exception e) { + log.warn("[WebHookAlarmService] invoke webhook[url={}] failed!", webHook, e); + } + }); + } +}