🐛 bug fix

This commit is contained in:
Song
2021-06-13 12:11:26 +08:00
parent 5124074b63
commit 9f04d2d7a9
6 changed files with 22 additions and 4 deletions
+2 -1
View File
@@ -87,7 +87,7 @@
## 发送消息的方式
1. 发送纯文本消息:直接 HTTP GET 请求 `https://你的域名/前缀/消息`,缺点是有字数限制,且只能是纯文本,这是微信模板消息的限制。
2. 发送 Markdown 消息,调用方式分为两种:
+ GET 请求方式:`https://你的域名/前缀/?&title=消息标题&description=简短的消息描述&content=markdown格式的消息内容&email=test@qq.com`
+ GET 请求方式:`https://你的域名/前缀/?&title=消息标题&description=简短的消息描述&content=markdown格式的消息内容&email=test@qq.com&token=private`
+ POST 请求方式:请求路径为 `https://你的域名/前缀/`,参数有:
1. `type`:(可选)发送方式
+ `test`:通过微信公众号测试号推送
@@ -97,6 +97,7 @@
3. `description`:(必填)消息的描述
4. `content`:(可选)消息内容,支持 Markdown
5. `email`:(可选)当该项不为空时,将强制覆盖 type 参数,强制消息类型为邮件消息,收件邮箱即此处指定的邮箱。如果 type 为 `email` 且 email 参数为空,则邮件将发送至用户设置的默认邮箱。
6. `token`:(可选)如果你设置了 ACCESS_TOKEN,则你需要附上该参数以验证身份。
## 待做清单
- [x] 支持多用户。
+7 -1
View File
@@ -1,10 +1,16 @@
const { getUserDefaultMethod } = require('./token');
const { getUserDefaultMethod, checkAccessToken } = require('./token');
const { pushWeChatMessage } = require('./wechat');
const { pushWeChatCorpMessage } = require('./wechat-corp');
const { pushEmailMessage } = require('./email');
const { Message } = require('../models');
async function processMessage(userPrefix, message) {
if (!checkAccessToken(userPrefix, message.token)) {
return {
success: false,
message: `invalid access token`,
};
}
if (message.email) {
// If message has the attribute "email", override its type.
message.type = 'email';
+10
View File
@@ -75,9 +75,19 @@ function getUserDefaultMethod(prefix) {
return user.defaultMethod;
}
function checkAccessToken(prefix, token) {
let user = tokenStore.get(prefix);
if (user.accessToken === '') {
return true;
} else {
return user.accessToken === token;
}
}
module.exports = {
initializeTokenStore,
updateTokenStore,
getUserDefaultMethod,
tokenStore,
checkAccessToken,
};
+1 -1
View File
@@ -145,7 +145,7 @@ router.post('/configure', userRequired, async (req, res, next) => {
for (let field in user) {
let value = user[field];
value = value.trim();
if (value) {
if (value || field === 'accessToken') {
user[field] = value;
} else {
delete user[field];
+1
View File
@@ -38,6 +38,7 @@ router.all('/:userPrefix', async (req, res, next) => {
description: req.query.description || req.body.description || '无描述',
content: req.query.content || req.body.content,
email: req.query.email || req.body.email,
token: req.query.token || req.body.token,
};
let result = await processMessage(userPrefix, message);
res.json(result);
+1 -1
View File
@@ -18,7 +18,7 @@
<div class="message-body">
运行模式:<%= process.env.MODE === '1' ? "Heroku 模式" : "普通模式"%>
<br>
内存占用: <%= (process.memoryUsage().rss / (1024 *1024)).toFixed(2) %> MB
内存占用<%= (process.memoryUsage().rss / (1024 *1024)).toFixed(2) %> MB
</div>
</article>
</div>