File size: 1,057 Bytes
96e6ae0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import express from "express";
import fetch from "node-fetch";

const router = express.Router();

// GET /api/img?u=<encoded image url>  -> يعيد الصورة من نفس الأصل (يحل CORS للـ canvas)
router.get("/img", async (req, res) => {
  try {
    const u = req.query.u;
    if (!u) return res.status(400).send("missing url");
    const url = decodeURIComponent(u);
    if (!/^https?:\/\//i.test(url)) return res.status(400).send("bad url");

    const r = await fetch(url, {
      headers: { "User-Agent": "Mozilla/5.0", Accept: "image/*" },
    });
    if (!r.ok) return res.status(502).send("fetch failed");

    const type = r.headers.get("content-type") || "image/jpeg";
    res.setHeader("Content-Type", type);
    res.setHeader("Cache-Control", "public, max-age=86400");
    res.setHeader("Access-Control-Allow-Origin", "*");
    const buf = Buffer.from(await r.arrayBuffer());
    res.send(buf);
  } catch (err) {
    console.error("img proxy error:", err);
    res.status(500).send("proxy error");
  }
});

export default router;