File size: 3,458 Bytes
06ba820 f49b2e6 2bb5f70 2234c15 2bb5f70 06ba820 2234c15 06ba820 2bb5f70 f49b2e6 2bb5f70 ec667c1 2bb5f70 ec667c1 2bb5f70 f49b2e6 06ba820 2bb5f70 2234c15 8d2d19d 2234c15 8d2d19d 2234c15 8d2d19d 2234c15 8d2d19d 2234c15 8d2d19d 2234c15 06ba820 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | 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;
|