From 5e89f7357e90b30b4c591f0610841c2f18703cdb Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 17 Apr 2019 13:09:51 +0900 Subject: [PATCH] feat: add vocus.cc publication (#1948) --- docs/social-media.md | 4 ++++ lib/router.js | 3 +++ lib/routes/vocus/publication.js | 24 ++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 lib/routes/vocus/publication.js diff --git a/docs/social-media.md b/docs/social-media.md index 453e0bec7..0ad5d725b 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -481,3 +481,7 @@ + +## 方格子 + + diff --git a/lib/router.js b/lib/router.js index 09b5141a7..b0ea54011 100755 --- a/lib/router.js +++ b/lib/router.js @@ -1260,4 +1260,7 @@ router.get('/21caijing/channel/:name', require('./routes/21caijing/channel')); // 北京邮电大学 router.get('/bupt/yz/:type', require('./routes/universities/bupt/yz')); +// VOCUS 方格子 +router.get('/vocus/publication/:id', require('./routes/vocus/publication')); + module.exports = router; diff --git a/lib/routes/vocus/publication.js b/lib/routes/vocus/publication.js new file mode 100644 index 000000000..1958749c1 --- /dev/null +++ b/lib/routes/vocus/publication.js @@ -0,0 +1,24 @@ +const axios = require('../../utils/axios'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const { _id, title, abstract } = (await axios.get(`https://api.sosreader.com/api/publication/${id}`)).data; + const { articles } = (await axios.get(`https://api.sosreader.com/api/articles?publicationId=${_id}&status=2&num=10&page=1`)).data; + const items = await Promise.all( + articles.map(async (item) => ({ + title: item.title, + author: item.user.fullname, + description: (await axios.get(`https://api.sosreader.com/api/article/${item._id}`)).data.article.content, + pubDate: new Date(item.updatedAt).toUTCString(), + link: `https://vocus.cc/${id}/${item._id}`, + })) + ); + + ctx.state.data = { + title: `${title} - 方格子`, + link: `https://vocus.cc/${id}/home`, + description: abstract, + item: items, + }; +};