UNPKG

rsshub

Version:
82 lines (80 loc) 2.42 kB
import "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; //#region lib/routes/github/repos.ts const route = { path: "/repos/:user/:type?/:sort?", categories: ["programming"], example: "/github/repos/DIYgod", parameters: { user: "GitHub username", type: "Type of repository, can be `all`, `owner`, `member`, `public`, `private`, `forks`, `sources`", sort: "Sort by `created`, `updated`, `pushed`, `full_name`" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["github.com/:user"] }], name: "User Repo", maintainers: ["DIYgod"], handler }; async function handler(ctx) { const user = ctx.req.param("user"); const type = ctx.req.param("type") || "all"; const sort = ctx.req.param("sort") || "created"; let headers = {}; if (config.github && config.github.access_token) headers = { ...headers, Authorization: `token ${config.github.access_token}` }; const item = (await got_default({ method: "get", url: `https://api.github.com/users/${user}/repos`, searchParams: { type, sort }, headers })).data.filter((item$1) => { switch (type) { case "all": return true; case "owner": return item$1.owner.login === user; case "member": return item$1.owner.login !== user; case "public": return item$1.private === false; case "private": return item$1.private === true; case "forks": return item$1.fork === true; case "sources": return item$1.fork === false; default: return true; } }).map((item$1) => { let pubDate = parseDate(item$1.created_at); if (sort === "updated" && item$1.updated_at) pubDate = parseDate(item$1.updated_at); else if (sort === "pushed" && item$1.pushed_at) pubDate = parseDate(item$1.pushed_at); return { title: item$1.name, description: item$1.description || "No description", pubDate, updated: parseDate(item$1.updated_at), link: item$1.html_url }; }); return { allowEmpty: true, title: `${user}'s GitHub repositories`, link: `https://github.com/${user}`, item }; } //#endregion export { route };