Skip to content

Commit

Permalink
feat(route): add Discourse official rss route (DIYgod#16681)
Browse files Browse the repository at this point in the history
* add discourse official rss rule

* fix issues with existing interfaces

* optimize path parameters and add annotation

---------
  • Loading branch information
raikyou authored Sep 12, 2024
1 parent ffb4767 commit c9235bc
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions lib/routes/discourse/official.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { Route } from '@/types';
import { getConfig } from './utils';
import got from '@/utils/got';
import RSSParser from '@/utils/rss-parser';

export const route: Route = {
path: '/:configId/official/:path{.+}',
categories: ['bbs'],
example: '/discourse/0/official/latest',
parameters: {
configId: 'Environment variable configuration id, see above',
path: 'Discourse RSS path between `domain` and `.rss`. All supported Rss path can be found in [https://meta.discourse.org/t/finding-discourse-rss-feeds/264134](https://meta.discourse.org/t/finding-discourse-rss-feeds/264134). For example: the path of [https://meta.discourse.org/top/all.rss](https://meta.discourse.org/top/all.rss) is `top/all`.',
},
features: {
requireConfig: [
{
name: 'DISCOURSE_CONFIG_*',
description: `Configure the Discourse environment variables referring to [https://docs.rsshub.app/deploy/config#discourse](https://docs.rsshub.app/deploy/config#discourse).`,
},
],
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
name: 'Official RSS',
maintainers: ['Raikyou', 'dzx-dzx'],
handler,
};

async function handler(ctx) {
const { link, key } = getConfig(ctx);
const path = ctx.req.param('path');

const url = `${link}/${path}.rss`;

const feed = await RSSParser.parseString(
(
await got(url, {
headers: {
'User-Api-Key': key,
},
})
).data
);

feed.items = feed.items.map((e) => ({
description: e.content,
author: e.creator,
...e,
}));

return { item: feed.items, ...feed };
}

0 comments on commit c9235bc

Please sign in to comment.