rsshub
Version:
Make RSS Great Again!
82 lines (80 loc) • 2.42 kB
JavaScript
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 };