Files
message-pusher/common/message.js
2021-08-17 23:10:11 +08:00

63 lines
1.8 KiB
JavaScript

const {
getUserDefaultMethod,
checkAccessToken,
checkPrefix,
} = require('./token');
const { pushWeChatMessage } = require('./wechat');
const { pushWeChatCorpMessage } = require('./wechat-corp');
const { pushEmailMessage } = require('./email');
const { pushClientMessage } = require('./client');
const { Message } = require('../models');
async function processMessage(userPrefix, message) {
if (!checkPrefix(userPrefix)) {
return {
success: false,
message: `不存在的用户前缀:${userPrefix}`,
};
}
if (!checkAccessToken(userPrefix, message.token)) {
return {
success: false,
message: `无效的访问凭证,请检查 token 参数是否正确`,
};
}
if (message.email) {
// If message has the attribute "email", override its type.
message.type = 'email';
}
if (!message.type) {
message.type = getUserDefaultMethod(userPrefix);
}
if (message.content && message.type !== 'email') {
// If message is not email type, we should save it because we have to serve the page.
message = await Message.create(message, { raw: true });
}
let result;
switch (message.type) {
case 'test': // WeChat message
result = await pushWeChatMessage(userPrefix, message);
break;
case 'email': // Email message
result = await pushEmailMessage(userPrefix, message);
break;
case 'corp': // WeChat corp message
result = await pushWeChatCorpMessage(userPrefix, message);
break;
case 'client': // Client message
result = await pushClientMessage(userPrefix, message);
break;
default:
result = {
success: false,
message: `不支持的消息类型:${message.type}`,
};
break;
}
return result;
}
module.exports = {
processMessage,
};