UNPKG

rsshub

Version:
62 lines (60 loc) 2 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-rr4AgGpp.mjs"; import { load } from "cheerio"; //#region lib/routes/bugzilla/bug.ts const INSTANCES = new Map([ ["apache", "bz.apache.org/bugzilla"], ["apache.ooo", "bz.apache.org/ooo"], ["apache.SpamAssassin", "bz.apache.org/SpamAssassin"], ["kernel", "bugzilla.kernel.org"], ["mozilla", "bugzilla.mozilla.org"], ["webkit", "bugs.webkit.org"] ]); async function handler(ctx) { const { site, bugId } = ctx.req.param(); if (!INSTANCES.has(site)) throw new invalid_parameter_default(`unknown site: ${site}`); const link = `https://${INSTANCES.get(site)}/show_bug.cgi?id=${bugId}`; const $ = load(await ofetch_default(`${link}&ctype=xml`)); const items = $("long_desc").map((index, rawItem) => { const $$1 = load(rawItem, null, false); return { title: `comment #${$$1("commentid").text()}`, link: `${link}#c${index}`, description: $$1("thetext").text(), pubDate: parseDate($$1("bug_when").text()), author: $$1("who").attr("name") }; }); return { title: $("short_desc").text(), link, item: items.toArray() }; } function markdownFrom(instances, separator = ", ") { return [...instances.entries()].map(([k, v]) => `[\`${k}\`](https://${v})`).join(separator); } const route = { path: "/bug/:site/:bugId", name: "bugs", maintainers: ["FranklinYu"], handler, example: "/bugzilla/bug/webkit/251528", parameters: { site: "site identifier", bugId: "numeric identifier of the bug in the site" }, description: `Supported site identifiers: ${markdownFrom(INSTANCES)}.`, categories: ["programming"], zh: { name: "bugs", description: `支持的站点标识符:${markdownFrom(INSTANCES, "、")}。` } }; //#endregion export { route };