From 329332ad97472e1ec0c5256b734fac71d0751d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lemuel=20M=C3=A1rquez?= Date: Tue, 25 Jul 2023 17:47:52 -0600 Subject: [PATCH] listo cambios --- server/helper/drive.js | 195 +++++++++++++++++++++++------------------ 1 file changed, 109 insertions(+), 86 deletions(-) diff --git a/server/helper/drive.js b/server/helper/drive.js index d6c9de0..d3935e9 100644 --- a/server/helper/drive.js +++ b/server/helper/drive.js @@ -1,37 +1,49 @@ require('../config/config'); const fs = require('fs'); const { google } = require('googleapis'); -const drive = google.drive('v3'); -const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); -const jwtClient = new google.auth.JWT( - credenciales.client_email, - null, - credenciales.private_key, - ['https://www.googleapis.com/auth/drive'] -); +// const drive = google.drive('v3'); +// const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); +// const jwtClient = new google.auth.JWT( +// credenciales.client_email, +// null, +// credenciales.private_key, +// ['https://www.googleapis.com/auth/drive'] +// ); + +const loadCredentials = () => { + try { + const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); + return google.auth.fromJSON(credenciales); + } catch (err) { + return null; + } +}; const list = (pageToken) => { - return new Promise((resolve, reject) => { - jwtClient.authorize((err, tokens) => { - if (err) reject('Error de autorización: ' + err); - drive.files.list( - { - auth: jwtClient, - corpora: 'user', - supportsTeamDrives: true, - includeTeamDriveItems: true, - spaces: 'drive', - pageSize: 1000, - pageToken, - // fields: '*', - orderBy: 'name', - }, - (err, resp) => { - if (err) reject('Ha habido un error en la petición: ' + err); - resolve(resp.data); - } - ); - }); + return new Promise(async (resolve, reject) => { + // jwtClient.authorize((err, tokens) => { + // if (err) reject('Error de autorización: ' + err); + const authClient = await loadCredentials(); + const drive = google.drive({ version: 'v3', auth: authClient }); + + drive.files.list( + { + // auth: jwtClient, + corpora: 'user', + supportsTeamDrives: true, + includeTeamDriveItems: true, + spaces: 'drive', + pageSize: 1000, + pageToken, + // fields: '*', + orderBy: 'name', + }, + (err, resp) => { + if (err) reject('Ha habido un error en la petición: ' + err); + resolve(resp.data); + } + ); + // }); }); }; @@ -39,26 +51,29 @@ const list = (pageToken) => { const deleteFile = (fileId) => { if (fileId === process.env.CARPETA) throw new Error('No se puede eliminar este archivo/carpeta.'); - return new Promise((resolve, reject) => { - jwtClient.authorize(async (err, tokens) => { - if (err) reject(err); - drive.files.delete( - { - fileId, - auth: jwtClient, - }, - (err, resp) => { - if (err) reject(err); - resolve(resp); - } - ); - }); + return new Promise(async (resolve, reject) => { + // jwtClient.authorize(async (err, tokens) => { + // if (err) reject(err); + const authClient = await loadCredentials(); + const drive = google.drive({ version: 'v3', auth: authClient }); + + drive.files.delete( + { + fileId, + // auth: jwtClient, + }, + (err, resp) => { + if (err) reject(err); + resolve(resp); + } + ); + // }); }); }; // SUBIR ARCHIVO const uploadFile = (path, name, mimeType, parent) => { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { const requestBody = { name, parents: [parent], @@ -68,64 +83,72 @@ const uploadFile = (path, name, mimeType, parent) => { body: fs.createReadStream(`${path}`), }; - jwtClient.authorize(function (err, tokens) { - if (err) reject('Error de autorización: ' + err); - drive.files.create( - { - media, - requestBody, - fields: 'id', - auth: jwtClient, - }, - (err, file) => { - if (err) reject(err); - fs.unlinkSync(path); - resolve(file.data.id); - } - ); - }); + // jwtClient.authorize(function (err, tokens) { + // if (err) reject('Error de autorización: ' + err); + const authClient = await loadCredentials(); + const drive = google.drive({ version: 'v3', auth: authClient }); + + drive.files.create( + { + media, + requestBody, + fields: 'id', + // auth: jwtClient, + }, + (err, file) => { + if (err) reject(err); + fs.unlinkSync(path); + resolve(file.data.id); + } + ); + // }); }); }; // CREAR CARPETA const mkDir = (name) => { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { + const authClient = await loadCredentials(); + const drive = google.drive({ version: 'v3', auth: authClient }); const requestBody = { name, mimeType: 'application/vnd.google-apps.folder', parents: [process.env.CARPETA], }; - jwtClient.authorize((err, tokens) => { - if (err) reject('Error de autorización: ' + err); - drive.files.create( - { - fields: 'id', - auth: jwtClient, - requestBody, - }, - (err, res) => { - if (err) reject(err); - resolve(res.data.id); - } - ); - }); + // jwtClient.authorize((err, tokens) => { + // if (err) reject('Error de autorización: ' + err); + drive.files.create( + { + fields: 'id', + // auth: jwtClient, + requestBody, + }, + (err, res) => { + if (err) reject(err); + resolve(res.data.id); + } + ); + // }); }); }; // Update File const update = (fileId, addParents, removeParents) => { - return new Promise((resolve, reject) => { - jwtClient.authorize((err, tokens) => { - if (err) reject('Error de autorización: ' + err); - drive.files.update( - { auth: jwtClient, fileId, addParents, removeParents }, - (err, resp) => { - if (err) reject('Ha habido un error en la petición: ' + err); - resolve(resp.data); - } - ); - }); + return new Promise(async (resolve, reject) => { + // jwtClient.authorize((err, tokens) => { + // if (err) reject('Error de autorización: ' + err); + const authClient = await loadCredentials(); + const drive = google.drive({ version: 'v3', auth: authClient }); + + drive.files.update( + { auth: jwtClient, fileId, addParents, removeParents }, + (err, resp) => { + if (err) reject('Ha habido un error en la petición: ' + err); + resolve(resp.data); + } + ); + // }); }); };