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;