Nexchan commited on
Commit
5b76e73
·
verified ·
1 Parent(s): 1093053

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +36 -0
index.js CHANGED
@@ -42,6 +42,42 @@ const tempDirBase = tempDir
42
 
43
  app.use('/temp', express.static(tempDir));
44
  app.use(express.json());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  app.get("/", (req, res) => {
47
  res.type("json");
 
42
 
43
  app.use('/temp', express.static(tempDir));
44
  app.use(express.json());
45
+ app.use(express.raw({ type: '*/*', limit: '10mb' })); // Untuk menangani buffer dan data binary
46
+
47
+ app.all('/axios/:method/*', async (req, res) => {
48
+ const { method } = req.params;
49
+ const targetUrl = `${req.params[0]}`; // Menangani URL setelah /:method/
50
+
51
+ try {
52
+ const response = await axios({
53
+ method: method.toLowerCase(),
54
+ url: targetUrl,
55
+ headers: req.headers,
56
+ data: req.method === 'POST' ? req.body : undefined, // Hanya kirim data jika metode adalah POST
57
+ responseType: 'arraybuffer' // Untuk menangani respons sebagai buffer
58
+ });
59
+
60
+ // Mengambil Content-Type dari header respons
61
+ const mimeType = response.headers['content-type'];
62
+
63
+ res.status(response.status);
64
+ res.set(response.headers); // Set headers dari respons API
65
+
66
+ // Menangani respons berdasarkan Content-Type
67
+ if (mimeType && (mimeType.includes('text') || mimeType.includes('json') || mimeType.includes('html') || mimeType.includes('plain'))) {
68
+ // Kirim data sebagai teks
69
+ res.send(response.data.toString());
70
+ } else {
71
+ // Kirim file binary, termasuk PDF
72
+ res.setHeader('Content-Length', response.data.length);
73
+ res.send(response.data);
74
+ }
75
+ } catch (error) {
76
+ res.status(error.response ? error.response.status : 500).json({
77
+ error: error.message
78
+ });
79
+ }
80
+ });
81
 
82
  app.get("/", (req, res) => {
83
  res.type("json");