Spaces:
Paused
Paused
Update index.js
Browse files
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 |
-
|
| 56 |
-
|
|
|
|
| 57 |
|
| 58 |
try {
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
data
|
| 64 |
-
|
| 65 |
-
|
| 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(
|
| 78 |
} else {
|
| 79 |
// Kirim file binary, termasuk PDF
|
| 80 |
-
res.setHeader('Content-Length',
|
| 81 |
-
res.send(
|
| 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);
|