UNPKG

rsshub

Version:
117 lines (115 loc) 2.9 kB
import "./esm-shims-CzJ_djXG.mjs"; import { t as config } from "./config-C37vj7VH.mjs"; import { t as ViewType } from "./types-D84BRIt4.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import "./parse-date-BrP7mxXf.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as filterEvents } from "./eventapi-BEQAmeDm.mjs"; //#region lib/routes/github/private-feed.ts const route = { path: "/feed/:user/:types?", categories: ["programming"], example: "/github/feed/yihong0618/star,release,pr", view: ViewType.Notifications, parameters: { user: "GitHub username", types: { description: "Event types to include, comma separated", default: "all", options: [ { label: "All events", value: "all" }, { label: "Create events", value: "create" }, { label: "Delete events", value: "delete" }, { label: "Fork events", value: "fork" }, { label: "Issue comment events", value: "issuecomm" }, { label: "Member events", value: "member" }, { label: "Pull request events", value: "pr" }, { label: "Pull request review comment events", value: "prcomm" }, { label: "Public events", value: "public" }, { label: "Push events", value: "push" }, { label: "Release events", value: "release" }, { label: "Watch events (stars)", value: "star" } ] } }, features: { requireConfig: [{ name: "GITHUB_ACCESS_TOKEN", optional: true, description: "GitHub access token to access private events" }], requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["github.com/:user"], target: "/feed/:user" }], name: "User's Feed", maintainers: ["RtYkk"], handler }; async function handler(ctx) { const user = ctx.req.param("user"); const types = ctx.req.param("types") || "all"; const isAuthenticated = config.github && config.github.access_token; const headers = {}; if (isAuthenticated) headers.Authorization = `token ${config.github.access_token}`; const items = filterEvents(types, (await got_default({ method: "get", url: `https://api.github.com/users/${user}/received_events`, headers, searchParams: { per_page: 100 } })).data); const typeFilter = types === "all" ? "All Events" : `Events: ${types}`; return { title: `${user}'s GitHub ${isAuthenticated ? "Private Feed" : "Public Feed"} - ${typeFilter}`, link: `https://github.com/${user}`, description: `GitHub events received by ${user}${types === "all" ? "" : ` (filtered: ${types})`}${isAuthenticated ? " - includes private events" : " - public events only"}`, item: items }; } //#endregion export { route };