Nexchan commited on
Commit
b1fae8b
·
verified ·
1 Parent(s): efb5c62

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +26 -13
index.js CHANGED
@@ -51,22 +51,35 @@ app.use(express.raw({ type: '*/*', limit: '10mb' })); // Untuk menangani buffer
51
  app.all('/axios/:method/*', async (req, res) => {
52
  const { method } = req.params;
53
  const targetUrl = decodeURIComponent(req.params[0]); // Menangani URL setelah /:method/
 
 
 
 
 
 
 
 
 
54
 
55
- console.log(`Method: ${method}`);
56
- console.log(`Target URL: ${targetUrl}`);
 
57
 
58
  try {
59
- const response = await axios({
60
- method: method.toLowerCase(),
61
- url: targetUrl,
62
- headers: req.headers,
63
- data: req.method === 'POST' ? req.body : undefined, // Hanya kirim data jika metode adalah POST
64
- responseType: 'arraybuffer', // Untuk menangani respons sebagai buffer
65
- httpsAgent: agent // Menonaktifkan validasi SSL jika diperlukan
66
- });
 
 
67
 
68
  // Mengambil Content-Type dari header respons
69
  const mimeType = response.headers['content-type'];
 
70
 
71
  res.status(response.status);
72
  res.set(response.headers); // Set headers dari respons API
@@ -74,11 +87,11 @@ app.all('/axios/:method/*', async (req, res) => {
74
  // Menangani respons berdasarkan Content-Type
75
  if (mimeType && (mimeType.includes('text') || mimeType.includes('json') || mimeType.includes('html') || mimeType.includes('plain'))) {
76
  // Kirim data sebagai teks
77
- res.send(response.data.toString());
78
  } else {
79
  // Kirim file binary, termasuk PDF
80
- res.setHeader('Content-Length', response.data.length);
81
- res.send(response.data);
82
  }
83
  } catch (error) {
84
  console.error('Error:', error.response ? error.response.data : error.message);
 
51
  app.all('/axios/:method/*', async (req, res) => {
52
  const { method } = req.params;
53
  const targetUrl = decodeURIComponent(req.params[0]); // Menangani URL setelah /:method/
54
+ const responseType = req.query.responseType || ''; // Menangani opsi responseType
55
+
56
+ let option = {
57
+ headers: {
58
+ ...req.headers, // Menyalin semua header dari permintaan asli
59
+ 'User-Agent': req.headers['user-agent'] || 'Mozilla/5.0 (Linux; Android 12; SM-S908B Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/99.0.4844.58 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/357.0.0.23.115;] WhatsApp/1.2.3', // Menambahkan custom user-agent
60
+ },
61
+ httpsAgent: agent
62
+ };
63
 
64
+ if (responseType) {
65
+ option.responseType = responseType;
66
+ }
67
 
68
  try {
69
+ let response;
70
+ if (method.toLowerCase() === 'get') {
71
+ response = await axios.get(targetUrl, option);
72
+ } else if (method.toLowerCase() === 'post') {
73
+ option.data = req.body;
74
+ response = await axios.post(targetUrl, req.body, option);
75
+ } else {
76
+ res.status(405).json({ error: 'Method not allowed' });
77
+ return;
78
+ }
79
 
80
  // Mengambil Content-Type dari header respons
81
  const mimeType = response.headers['content-type'];
82
+ const buffer = Buffer.from(response.data, 'binary');
83
 
84
  res.status(response.status);
85
  res.set(response.headers); // Set headers dari respons API
 
87
  // Menangani respons berdasarkan Content-Type
88
  if (mimeType && (mimeType.includes('text') || mimeType.includes('json') || mimeType.includes('html') || mimeType.includes('plain'))) {
89
  // Kirim data sebagai teks
90
+ res.send(buffer.toString('utf-8'));
91
  } else {
92
  // Kirim file binary, termasuk PDF
93
+ res.setHeader('Content-Length', buffer.length);
94
+ res.send(buffer);
95
  }
96
  } catch (error) {
97
  console.error('Error:', error.response ? error.response.data : error.message);