⚠️ Advertencia sobre Modificaciones del Core: Si bien BaP Framework permite modificar cualquier archivo en src/_main/, ten en cuenta que al actualizar a una nueva versión de BaP en el futuro, cualquier cambio manual en los archivos del núcleo se sobrescribirá y perderá. Se sugiere contactar al referente o mantenedor del framework para sugerir mejoras o cambios antes de alterar el motor localmente.

Módulo googleDrive.js

Servicio desacoplado para la interacción con la API REST v3 de Google Drive. Permite asegurar directorios remotos, listar, leer, crear y actualizar archivos en la nube usando un Access Token de Google OAuth 2.0.

Funciones Exportadas (export function)

1. ensureFolder(accessToken, folderName)

Firma: ensureFolder(accessToken: string, folderName: string): Promise<string>

Propósito: Busca un directorio por nombre en Google Drive y, si no existe, lo crea automáticamente retornando su ID remoto.

ParámetroTipoRequeridoDescripción
accessTokenStringToken de acceso OAuth 2.0 con permisos de Google Drive.
folderNameStringNombre del directorio a asegurar o crear.

Ejemplo de uso:

import { ensureFolder } from "../../_main/googleDrive.js";

const folderId = await ensureFolder(token, "BaP Framework Documents");
console.log("ID del directorio remoto:", folderId);

2. listFiles(accessToken, folderId)

Firma: listFiles(accessToken: string, folderId: string): Promise<Array>

Propósito: Retorna la lista de archivos contenidos dentro de un directorio remoto en Google Drive.

ParámetroTipoRequeridoDescripción
accessTokenStringToken OAuth 2.0 de Google.
folderIdStringID del directorio remoto en Google Drive.

Ejemplo de uso:

import { listFiles } from "../../_main/googleDrive.js";

const files = await listFiles(token, folderId);
files.forEach(f => console.log("Archivo encontrado:", f.name));

3. readFileContent(accessToken, fileId)

Firma: readFileContent(accessToken: string, fileId: string): Promise<string>

Propósito: Descarga el contenido en texto plano o JSON de un archivo alojado en Google Drive.

ParámetroTipoRequeridoDescripción
accessTokenStringToken OAuth 2.0 de Google.
fileIdStringID del archivo remoto a leer.

Ejemplo de uso:

import { readFileContent } from "../../_main/googleDrive.js";

const content = await readFileContent(token, fileId);
console.log("Contenido del archivo remoto:", content);

4. createFile(accessToken, { name, content, folderId, mimeType })

Firma: createFile(accessToken: string, options: Object): Promise<Object>

Propósito: Crea un nuevo archivo en el directorio remoto de Google Drive utilizando una petición `multipart/related`.

ParámetroTipoRequeridoDescripción
accessTokenStringToken OAuth 2.0 de Google.
options.nameStringNombre del archivo nuevo a crear.
options.contentStringContenido en texto o JSON del archivo.
options.folderIdStringID del directorio contenedor remoto.
options.mimeTypeStringOpcionalTipo MIME (por defecto "text/xml" o "application/json").

Ejemplo de uso:

import { createFile } from "../../_main/googleDrive.js";

const newFile = await createFile(token, {
  name: "reporte.json",
  content: JSON.stringify({ status: "OK" }),
  folderId: folderId,
  mimeType: "application/json"
});

5. updateFile(accessToken, { fileId, content, mimeType })

Firma: updateFile(accessToken: string, options: Object): Promise<Object>

Propósito: Sobrescribe y actualiza el contenido de un archivo existente en Google Drive.

ParámetroTipoRequeridoDescripción
accessTokenStringToken OAuth 2.0 de Google.
options.fileIdStringID del archivo remoto a actualizar.
options.contentStringNuevo contenido del archivo.
options.mimeTypeStringOpcionalTipo MIME del archivo.

Ejemplo de uso:

import { updateFile } from "../../_main/googleDrive.js";

await updateFile(token, {
  fileId: existingFileId,
  content: JSON.stringify({ status: "UPDATED" }),
  mimeType: "application/json"
});

Buenas Prácticas