SIAF / src /sub-router /test.ts
GUI-STUDIO
tests
8d2d19d
Raw
History Blame Contribute Delete
3.46 kB
import { Context, Elysia, t } from "elysia";
import https from "node:https";
import { NS_error } from "../../../../../packages/lib/helpers/client/error";
import { NS_routes_c } from "../../../../../packages/lib/helpers/client/route";
import { NS_promise } from "../../../../../packages/lib/helpers/client/promise";
import ky from "ky";
import { Readable } from "node:stream";
const REPO_ORIGIN = process.env.REPO_ORIGIN;
const sub_router = new Elysia({ prefix: "/test" }).get("/foo", async (ctx) => {
const { query, params, request, status, set } = ctx;
const REQ0 = request.url;
const REQ_ORIGIN = (ctx as any).publicOrigin || new URL(REQ0).origin;
if (!REPO_ORIGIN) {
throw NS_error.F_create_error({
status: 400,
message: "Repo origin undefined"
});
}
let target = new URL(
"https://dl.gemlelispe.workers.dev/https%3A%2F%2Fbcdnxw.hakunaymatata.com%2Fbt%2F7e1c2ff4f2a619c16f40825883eebe6e.mp4%3Fsign%3D288c2a2346ad3cd3c22dcc70e483ca7f%26t%3D1773678165?n=Vini%20Jr.%20(2025)"
);
const [E_, R_] = await NS_promise.F_catch_promise({
promise: ky
.post(NS_routes_c.F_flat_url_slash(`${REPO_ORIGIN}/dns/resolve`), {
json: {
target: target.href,
method: "GET",
headers: {
referer: "https://dl.vidsrc.vip/"
}
}
})
.json()
});
if (E_ || !R_) {
const { status, message } = NS_error.F_collect_error_status_n_message({
ERR: E_
});
throw NS_error.F_create_error({ status, message });
}
try {
return new Promise((resolve, reject) => {
const req = https.request(R_, (res) => {
const res_headers = res.headers;
const res_status = res.statusCode;
const new_res_headers = new Headers();
const blacklisted_headers = [
"host",
"connection",
"content-encoding",
"transfer-encoding",
"access-control-allow-origin", // Let Elysia handle CORS if needed
"x-frame-options",
"content-security-policy"
];
Object.entries(res_headers).forEach(([key, value]) => {
if (!blacklisted_headers.includes(key.toLowerCase()) && value) {
new_res_headers.set(key, value.toString());
if (["content-length"].includes(key.toLowerCase())) {
new_res_headers.set(`x-content-length`, value.toString());
}
}
});
set.status = res_status;
Object.entries(new_res_headers).forEach(([key, value]) => {
set.headers[key] = value.toString();
});
// Convert the Node.js Readable stream to a Web ReadableStream (what Elysia/Bun expects)
const web_stream = Readable.toWeb(res);
// const web_stream = Readable.toWeb(Readable.from([""]));
// Resolve the promise with the stream immediately
// resolve(web_stream);
resolve(
new Response(web_stream as any, {
status: res_status,
headers: new_res_headers
})
);
});
req.on("error", (err) => {
set.status = 502;
resolve({ error: "Upstream connection failed" });
});
req.end();
});
} catch (error: unknown) {
const { status, message } = NS_error.F_collect_error_status_n_message({
ERR: error
});
throw NS_error.F_create_error({ status, message });
}
});
export const TestRouter = sub_router;