const express = require('express'); const multer = require('multer'); const { google } = require('googleapis'); const fs = require('fs'); const path = require('path'); const app = express(); // Konfigurasi multer untuk menangani upload file const upload = multer({ dest: 'uploads/' }); // Setup Google Drive API credentials const CLIENT_ID = process.env.GOOGLE_DRIVE_CLIENT_ID; const CLIENT_SECRET = process.env.GOOGLE_DRIVE_CLIENT_SECRET; const REFRESH_TOKEN = process.env.GOOGLE_DRIVE_REFRESH_TOKEN; const FOLDER_ID = process.env.GOOGLE_DRIVE_FOLDER_ID; const oauth2Client = new google.auth.OAuth2( CLIENT_ID, CLIENT_SECRET, "https://developers.google.com/oauthplayground" // Redirect URL (tidak digunakan) ); oauth2Client.setCredentials({ refresh_token: REFRESH_TOKEN, }); const drive = google.drive({ version: 'v3', auth: oauth2Client, }); // Function to upload file to Google Drive async function uploadFileToGoogleDrive(file) { try { const fileMetadata = { 'name': file.originalname, 'parents': [FOLDER_ID], // Folder ID tempat file akan disimpan }; const media = { mimeType: file.mimetype, body: fs.createReadStream(file.path), }; const response = await drive.files.create({ resource: fileMetadata, media: media, fields: 'id', }); return response.data.id; } catch (error) { throw new Error('Gagal mengunggah ke Google Drive: ' + error.message); } } // Endpoint untuk upload file app.post('/upload', upload.single('file'), async (req, res) => { try { if (!req.file) { return res.status(400).send('No file uploaded.'); } const fileId = await uploadFileToGoogleDrive(req.file); // Hapus file lokal setelah diunggah ke Google Drive fs.unlinkSync(req.file.path); res.json({ message: 'File uploaded successfully to Google Drive!', fileId: fileId, }); } catch (error) { res.status(500).send('Error uploading file: ' + error.message); } }); // Start server const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });