增加自定义hook通知

This commit is contained in:
whyour
2022-09-20 01:16:36 +08:00
parent 4d9bbcfd3f
commit 931638b687
4 changed files with 60 additions and 3 deletions
+12 -1
View File
@@ -1,3 +1,5 @@
import { IncomingHttpHeaders } from 'http';
export enum NotificationMode {
'gotify' = 'gotify',
'goCqHttpBot' = 'goCqHttpBot',
@@ -12,6 +14,7 @@ export enum NotificationMode {
'iGot' = 'iGot',
'pushPlus' = 'pushPlus',
'email' = 'email',
'webhook' = 'webhook',
}
abstract class NotificationBaseInfo {
@@ -87,6 +90,13 @@ export class EmailNotification extends NotificationBaseInfo {
public emailPass: string = '';
}
export class WebhookNotification extends NotificationBaseInfo {
public webhookHeaders: IncomingHttpHeaders = {};
public webhookBody: any = {};
public webhookUrl: string = '';
public webhookMethod: 'GET' | 'POST' | 'PUT' = 'GET';
}
export interface NotificationInfo
extends GoCqHttpBotNotification,
GotifyNotification,
@@ -100,4 +110,5 @@ export interface NotificationInfo
WeWorkAppNotification,
IGotNotification,
PushPlusNotification,
EmailNotification {}
EmailNotification,
WebhookNotification {}
+16
View File
@@ -26,6 +26,7 @@ export default class NotificationService {
['iGot', this.iGot],
['pushPlus', this.pushPlus],
['email', this.email],
['webhook', this.webhook],
]);
private timeout = 10000;
@@ -383,4 +384,19 @@ export default class NotificationService {
return !!info.messageId;
}
private async webhook() {
const { webhookUrl, webhookBody, webhookHeaders, webhookMethod } =
this.params;
const { statusCode } = await got(webhookUrl, {
method: webhookMethod,
headers: webhookHeaders,
body: webhookBody,
timeout: this.timeout,
retry: 0,
});
return String(statusCode).includes('20');
}
}