mirror of
https://github.com/whyour/qinglong.git
synced 2025-07-08 04:16:07 +08:00
修复自定义通知
This commit is contained in:
parent
e08f0cd308
commit
f23e7a9e49
|
@ -389,8 +389,12 @@ export default class NotificationService {
|
||||||
const { webhookUrl, webhookBody, webhookHeaders, webhookMethod, webhookContentType } =
|
const { webhookUrl, webhookBody, webhookHeaders, webhookMethod, webhookContentType } =
|
||||||
this.params;
|
this.params;
|
||||||
|
|
||||||
|
const { formatBody, formatUrl } = this.formatNotifyContent(webhookUrl, webhookBody);
|
||||||
|
if (!formatUrl && !formatBody) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
const headers = parseHeaders(webhookHeaders);
|
const headers = parseHeaders(webhookHeaders);
|
||||||
const body = parseBody(webhookBody, webhookContentType);
|
const body = parseBody(formatBody, webhookContentType);
|
||||||
const bodyParam = this.formatBody(webhookContentType, body);
|
const bodyParam = this.formatBody(webhookContentType, body);
|
||||||
const options = {
|
const options = {
|
||||||
method: webhookMethod,
|
method: webhookMethod,
|
||||||
|
@ -400,7 +404,7 @@ export default class NotificationService {
|
||||||
allowGetBody: true,
|
allowGetBody: true,
|
||||||
...bodyParam
|
...bodyParam
|
||||||
}
|
}
|
||||||
const res = await got(webhookUrl, options);
|
const res = await got(formatUrl, options);
|
||||||
return String(res.statusCode).startsWith('20');
|
return String(res.statusCode).startsWith('20');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,4 +420,15 @@ export default class NotificationService {
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private formatNotifyContent(url: string, body: string) {
|
||||||
|
if (!url.includes('$title') && !body.includes('$title')) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
formatUrl: url.replaceAll('$title', encodeURIComponent(this.title)).replaceAll('$content', encodeURIComponent(this.content)),
|
||||||
|
formatBody: body.replaceAll('$title', this.title).replaceAll('$content', this.content),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ import React, { useEffect, useState } from 'react';
|
||||||
import { Typography, Input, Form, Button, Select, message } from 'antd';
|
import { Typography, Input, Form, Button, Select, message } from 'antd';
|
||||||
import { request } from '@/utils/http';
|
import { request } from '@/utils/http';
|
||||||
import config from '@/utils/config';
|
import config from '@/utils/config';
|
||||||
import { parseBody, parseHeaders } from '@/utils';
|
|
||||||
|
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
|
@ -28,7 +27,7 @@ const NotificationSetting = ({ data }: any) => {
|
||||||
if (_data && _data.code === 200) {
|
if (_data && _data.code === 200) {
|
||||||
message.success(values.type ? '通知发送成功' : '通知关闭成功');
|
message.success(values.type ? '通知发送成功' : '通知关闭成功');
|
||||||
} else {
|
} else {
|
||||||
message.error(_data.data);
|
message.error(_data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((error: any) => {
|
.catch((error: any) => {
|
||||||
|
|
|
@ -238,9 +238,9 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'webhookUrl',
|
label: 'webhookUrl',
|
||||||
tip: '请求链接以http或者https开头',
|
tip: '请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置',
|
||||||
required: true,
|
required: true,
|
||||||
placeholder: 'https://xxx.cn/api?query=xxx\n',
|
placeholder: 'https://xxx.cn/api?content=$title\n',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'webhookHeaders',
|
label: 'webhookHeaders',
|
||||||
|
@ -249,8 +249,8 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'webhookBody',
|
label: 'webhookBody',
|
||||||
tip: '请求体格式key1: value1,多个换行分割',
|
tip: '请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置',
|
||||||
placeholder: 'key1: value1\nkey2: value2',
|
placeholder: 'key1: $title\nkey2: $content',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue
Block a user