rsshub
Version:
Make RSS Great Again!
342 lines (341 loc) • 12 kB
JavaScript
import { t as config } from "./config-CCmw1BNE.mjs";
import { t as cache_default } from "./cache-BkqOokyU.mjs";
import { t as got_default } from "./got-BTowW50G.mjs";
import { t as InvalidParameterError } from "./invalid-parameter-CGxhjomn.mjs";
import { t as ConfigNotFoundError } from "./config-not-found-fQ5mxvDU.mjs";
import { n as fetchArticle } from "./wechat-mp-BPi_ETC7.mjs";
import { t as CaptchaError } from "./captcha-BP6deQBe.mjs";
import { t as wait } from "./wait-Do273esS.mjs";
//#region lib/routes/test/index.ts
let cacheIndex = 0;
const route = {
path: "/:id/:params?",
example: "/test/1",
name: "Test",
maintainers: ["DIYgod", "NeverBehave"],
handler
};
async function handler(ctx) {
if (ctx.req.param("id") === "error") throw new Error("Error test");
if (ctx.req.param("id") === "httperror") await got_default({
method: "get",
url: "https://httpbingo.org/status/404"
});
if (ctx.req.param("id") === "config-not-found-error") throw new ConfigNotFoundError("Test config not found error");
if (ctx.req.param("id") === "invalid-parameter-error") throw new InvalidParameterError("Test invalid parameter error");
if (ctx.req.param("id") === "captcha-error") throw new CaptchaError("Test captcha error");
if (ctx.req.param("id") === "redirect") return ctx.set("redirect", "/test/1");
let item = [];
let image = null;
switch (ctx.req.param("id")) {
case "filter":
item = [
{
title: "Filter Title1",
description: "Description1",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/-1",
author: "DIYgod0",
category: ["Category0", "Category1"]
},
{
title: "Filter Title2",
description: "Description2",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: "DIYgod0",
category: [
"Category0",
"Category1",
"Category2"
]
},
{
title: "Filter Title3",
description: "Description3",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/1",
author: "DIYgod0",
category: "Category3"
}
];
break;
case "filter-illegal-category":
item.push({
title: "TitleIllegal",
description: "DescriptionIllegal",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/1",
author: "DIYgod0",
category: [
1,
"CategoryIllegal",
true,
null,
void 0,
{ type: "object" }
]
});
break;
case "long":
item.push({
title: "Long Title ".repeat(50),
description: "Long Description ".repeat(10),
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: "DIYgod0"
});
break;
case "cache": {
const description = await cache_default.tryGet("test", () => Promise.resolve({ text: `Cache${++cacheIndex}` }));
item.push({
title: "Cache Title",
description: description.text,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: "DIYgod0"
});
break;
}
case "refreshCache": {
let refresh = await cache_default.get("refreshCache");
let noRefresh = await cache_default.get("noRefreshCache", false);
if (!refresh) {
refresh = "0";
await cache_default.set("refreshCache", "1");
}
if (!noRefresh) {
noRefresh = "0";
await cache_default.set("noRefreshCache", "1", void 0);
}
item.push({
title: "Cache Title",
description: refresh + " " + noRefresh,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: "DIYgod0"
});
break;
}
case "cacheUrlKey": {
const description = await cache_default.tryGet(new URL("https://rsshub.app"), () => Promise.resolve({ text: `Cache${++cacheIndex}` }), config.cache.routeExpire * 2);
item.push({
title: "Cache Title",
description: description.text,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: "DIYgod0"
});
break;
}
case "complicated":
image = "https://mock.com/DIYgod/RSSHub.png";
item.push({
title: "Complicated Title",
description: `<a href="/DIYgod/RSSHub"></a>
<img src="/DIYgod/RSSHub.jpg">
<script>alert(1);<\/script>
<a href="http://mock.com/DIYgod/RSSHub"></a>
<img src="/DIYgod/RSSHub.jpg" data-src="/DIYgod/RSSHub0.jpg">
<img data-src="/DIYgod/RSSHub.jpg">
<img data-mock="/DIYgod/RSSHub.png">
<img mock="/DIYgod/RSSHub.gif">
<img src="http://mock.com/DIYgod/DIYgod/RSSHub">
<img src="/DIYgod/RSSHub.jpg" onclick="alert(1);" onerror="alert(1);" onload="alert(1);">
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "//mock.com/DIYgod/RSSHub",
author: "DIYgod"
}, {
title: "Complicated Title",
description: `<a href="/DIYgod/RSSHub"></a>
<img src="/DIYgod/RSSHub.jpg">`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://mock.com/DIYgod/RSSHub",
author: "DIYgod"
}, {
title: "Complicated Title",
description: `<a href="/DIYgod/RSSHub"></a>
<img src="/DIYgod/RSSHub.jpg">
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "//mock.com/DIYgod/RSSHub",
author: "DIYgod",
enclosure_url: "https://mock.com/DIYgod/RSSHub.png",
enclosure_type: "image/png",
itunes_item_image: "https://mock.com/DIYgod/RSSHub.gif"
}, {
title: "Complicated Title",
description: `<a href="/DIYgod/RSSHub"></a>
<img src="/DIYgod/RSSHub.jpg">
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "//mock.com/DIYgod/RSSHub",
author: "DIYgod",
image: "https://mock.com/DIYgod/RSSHub.jpg"
});
break;
case "multimedia":
item.push({
title: "Multimedia Title",
description: `<img src="/DIYgod/RSSHub.jpg">
<video src="/DIYgod/RSSHub.mp4"></video>
<video poster="/DIYgod/RSSHub.jpg">
<source src="/DIYgod/RSSHub.mp4" type="video/mp4">
<source src="/DIYgod/RSSHub.webm" type="video/webm">
</video>
<audio src="/DIYgod/RSSHub.mp3"></audio>
<iframe src="/DIYgod/RSSHub.html"></iframe>`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://mock.com/DIYgod/RSSHub",
author: "DIYgod"
}, {
title: "Multimedia Title",
description: `<img src="/DIYgod/RSSHub.jpg">
<video src="/DIYgod/RSSHub.mp4"></video>`,
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://mock.com/DIYgod/RSSHub",
author: "DIYgod",
enclosure_url: "https://mock.com/DIYgod/RSSHub.mp4",
enclosure_type: "video/mp4"
});
break;
case "sort":
item.push({
title: "Sort Title 0",
link: "https://github.com/DIYgod/RSSHub/issues/s1",
author: "DIYgod0"
}, {
title: "Sort Title 1",
link: "https://github.com/DIYgod/RSSHub/issues/s1",
author: "DIYgod0"
}, {
title: "Sort Title 2",
link: "https://github.com/DIYgod/RSSHub/issues/s2",
pubDate: (/* @__PURE__ */ new Date(1546272e6 - 100 * 1e3)).toUTCString(),
author: "DIYgod0"
}, {
title: "Sort Title 3",
link: "https://github.com/DIYgod/RSSHub/issues/s3",
pubDate: (/* @__PURE__ */ new Date(1546272e6)).toUTCString(),
author: "DIYgod0"
});
break;
case "mess":
item.push({
title: "Mess Title",
link: "/DIYgod/RSSHub/issues/0",
pubDate: 1546272e6,
author: "DIYgod0"
});
break;
case "opencc":
item.push({
title: "小可愛",
description: "宇宙無敵",
link: "/DIYgod/RSSHub/issues/0",
pubDate: (/* @__PURE__ */ new Date(1546272e6)).toUTCString(),
author: "DIYgod0"
});
break;
case "brief":
item.push({
title: "小可愛",
description: "<p>宇宙無敵</p><br>".repeat(1e3),
link: "/DIYgod/RSSHub/issues/0",
pubDate: (/* @__PURE__ */ new Date(1546272e6)).toUTCString(),
author: "DIYgod0"
});
break;
case "json":
item.push({
title: "Title0",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/-3"
}, {
title: "Title1",
description: "Description1",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/-2",
author: "DIYgod0 ",
category: "Category0"
}, {
title: "Title2 HTML in description",
description: "<a href=\"https://github.com/DIYgod/RSSHub\">RSSHub</a>",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
updated: (/* @__PURE__ */ new Date("2019-3-2")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/-1",
author: [{ name: " DIYgod1" }, { name: "DIYgod2 " }],
category: ["Category0", "Category1"]
}, {
title: "Title3 HTML in content",
content: { html: "<a href=\"https://github.com/DIYgod/RSSHub\">DIYgod/RSSHub</a>" },
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
updated: (/* @__PURE__ */ new Date("2019-3-2")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0",
author: [
{ name: " DIYgod3" },
{ name: "DIYgod4 " },
{ name: "DIYgod5 " }
],
category: ["Category1"],
enclosure_url: "https://github.com/DIYgod/RSSHub/issues/0",
enclosure_type: "image/jpeg",
enclosure_length: 3661,
itunes_duration: 36610
}, {
title: "Title4 author is null",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/pull/11555",
author: null
});
break;
case "gpt":
item.push({
title: "Title0",
description: "Description0",
pubDate: (/* @__PURE__ */ new Date("2019-3-1")).toUTCString(),
link: "https://github.com/DIYgod/RSSHub/issues/0"
});
break;
default:
}
for (let i = 1; i < 6; i++) item.push({
title: `Title${i}`,
description: `Description${i}`,
pubDate: (/* @__PURE__ */ new Date((ctx.req.param("id") === "current_time" ? Date.now() : 1546272e6) - i * 10 * 1e3)).toUTCString(),
link: `https://github.com/DIYgod/RSSHub/issues/${i}`,
author: `DIYgod${i}`
});
if (ctx.req.param("id") === "empty") item = null;
if (ctx.req.param("id") === "allow_empty") item = null;
if (ctx.req.param("id") === "enclosure") item = [{
title: "",
link: "https://github.com/DIYgod/RSSHub/issues/1",
enclosure_url: "https://github.com/DIYgod/RSSHub/issues/1",
enclosure_length: 3661,
itunes_duration: 36610
}];
if (ctx.req.param("id") === "slow") await wait(1e3);
if (ctx.req.param("id") === "slow4") await wait(4e3);
if (ctx.req.query("mode") === "fulltext") item = [{
title: "",
link: "https://m.thepaper.cn/newsDetail_forward_4059298"
}];
if (ctx.req.param("id") === "wechat-mp") {
const params = ctx.req.param("params");
if (!params) throw new InvalidParameterError("Invalid parameter");
item = [await fetchArticle("https:/mp.weixin.qq.com/s" + (params.includes("&") ? "?" : "/") + params)];
}
return {
image: image ?? void 0,
title: `Test ${ctx.req.param("id")}`,
itunes_author: ctx.req.param("id") === "enclosure" ? "DIYgod" : null,
link: "https://github.com/DIYgod/RSSHub",
item,
allowEmpty: ctx.req.param("id") === "allow_empty",
description: ctx.req.param("id") === "complicated" ? "<img src=\"http://mock.com/DIYgod/DIYgod/RSSHub\">" : ctx.req.param("id") === "multimedia" ? "<video src=\"http://mock.com/DIYgod/DIYgod/RSSHub\"></video>" : "A test route for RSSHub"
};
}
//#endregion
export { route };