Skip to content

whyself/YuqueEmailPusherBackend

Repository files navigation

YuqueEmailPusherBackend

the backend of YuqueEmailPusher

API:

// 订阅接口:用户提交邮箱,添加订阅
router.post('/subscribe', async (req, res) => {
  const { email ,docSlug=process.env.KNOWLEDGE_BASE_ID, single, author} = req.body;
  const result = await services.subscribe(email, docSlug, single, author); // 调用订阅方法
  res.json(result); // 返回结果
});
/*
url {{baseURL}}/api/subscribe

method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
    email: 'test@example.com',
    docSlug: 'ua1c3q',//选择的文档的 url
    single: false,//单个文档还是包含其所有子文档
    author: '作者名'//空白代表不限
})
*/
// 取消订阅接口:用户提交邮箱,取消特定的一条订阅信息
router.post('/unsubscribe', async (req, res) => {
  const { email ,docSlug, single, author} = req.body;
  const result = await services.unsubscribe(email, docSlug, single, author); // 调用取消订阅方法
  res.json(result);
});
/*
url {{baseURL}}/api/unsubscribe

method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
    email: 'test@example.com',
    docSlug: 'ua1c3q',//选择的文档的 url
    single: false,//单个文档还是包含其所有子文档
    author: '作者名'//空白代表不限
})
*/
// 取消订阅接口:用户提交邮箱,取消特定的邮箱所有订阅信息
router.post('/unsubscribeAll', async (req, res) => {
  const { email } = req.body;
  const result = await services.unsubscribeAll(email); // 调用取消订阅方法
  res.json(result);
});
/*
url {{baseURL}}/api/unsubscribeAll

method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
    email: 'test@example.com'
})
*/
// 手动触发推送接口:管理员可手动执行一次推送任务
router.post('/push/manual', async (req, res) => {
  await services.manualPush(); // 调用手动推送方法
  res.json({ message: '手动推送任务已触发' });
});
/*
url {{baseURL}}/api/push/manual

method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
})
*/
// 查询所有或者单个订阅者接口:用于管理界面展示订阅列表
router.get('/subscriptions', async (req, res) => {
  const { Subscription } = require('./models');
  const { email } = req.query;
  let subscriptions;
  if (email) {
    subscriptions = await Subscription.find({ email: email });
  } else {
    subscriptions = await Subscription.find();
  }
  res.json(subscriptions);
});
/*
url {{baseURL}}/api/subscriptions?mail=test@example.com

*/
//清除数据库,需要密钥
router.post('/clear-db', async (req, res) => {
  const { secret } = req.body;
  if (secret !== process.env.ADMIN_SECRET) {
    return res.status(403).json({ success: false, message: '无权限' });
  }
  await Subscription.deleteMany({});
  await PushHistory.deleteMany({});
  await DocTree.deleteMany({});
  res.json({ success: true, message: '数据库已清空' });
});

/*
url {{baseURL}}/api/clear-db

method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
      secret:""
})
*/

About

the backend of YuqueEmailPusher

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published