rsshub
Version:
Make RSS Great Again!
138 lines (136 loc) • 3.34 kB
JavaScript
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/repo-event.ts
const route = {
path: "/repo_event/:owner/:repo/:types?",
categories: ["programming"],
example: "/github/repo_event/DIYgod/RSSHub",
view: ViewType.Notifications,
parameters: {
owner: "Username or organization name",
repo: "Repository name",
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 create events",
value: "issue"
},
{
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: "Pull request review events",
value: "prrev"
},
{
label: "Public events",
value: "public"
},
{
label: "Push events",
value: "push"
},
{
label: "Release events",
value: "release"
},
{
label: "Watch events (stars)",
value: "star"
},
{
label: "Wiki item create or update events",
value: "wiki"
},
{
label: "Commit comment events",
value: "cmcomm"
},
{
label: "Discussion events",
value: "discussion"
}
]
}
},
features: {
requireConfig: [{
name: "GITHUB_ACCESS_TOKEN",
optional: true,
description: "GitHub access token to access private repository events"
}],
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{
source: ["github.com/:owner/:repo"],
target: "/repo_event/:owner/:repo"
}],
name: "Repository Event",
maintainers: ["mslxl"],
handler
};
async function handler(ctx) {
const owner = ctx.req.param("owner");
const repo = ctx.req.param("repo");
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/repos/${owner}/${repo}/events`,
headers,
searchParams: { per_page: 100 }
})).data);
return {
title: `${owner}/${repo} GitHub Repo Feed - ${types === "all" ? "All Events" : `Events: ${types}`}`,
link: `https://github.com/${owner}/${repo}`,
description: `GitHub events received by ${owner}/${repo}${types === "all" ? "" : ` (filtered: ${types})`}${isAuthenticated ? " - includes private events" : " - public events only"}`,
item: items
};
}
//#endregion
export { route };