Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ehopperdietzel/Google-Drive-Node-App
Freelancer Projects
https://github.com/ehopperdietzel/Google-Drive-Node-App
Last synced: 2 months ago
JSON representation
Freelancer Projects
- Host: GitHub
- URL: https://github.com/ehopperdietzel/Google-Drive-Node-App
- Owner: ehopperdietzel
- Created: 2018-07-24T03:28:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-08-06T21:10:05.000Z (over 6 years ago)
- Last Synced: 2024-08-01T16:32:34.071Z (5 months ago)
- Language: JavaScript
- Size: 5.45 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Google Drive Node.js API
Servidor Node.js con API REST para facilitar la interacción entre Google Drive API y aplicaciones web, móviles y/o de escritorio.
## Checklist
* Login ✔️
* Obtener lista de archivos de un directorio ✔️
* Copiar documento ✔️
* Mover documento ✔️
* Renombrar documento ✔️
* Crear documento ✔️
* Crear directorio ✔️
* Descargar documento como PDF ✔️
* Crear permisos a un archivo ✔️
* Modificar permisos a un archivo ✔️
* Obtener lista de permisos creados a un archivo ✔️
* Obtener información de un permiso ✔️
* Eliminar permisos a un archivo ✔️
* Obtener comentarios de un documento ✔️
* Obtener historial de modificaciones de un documento ✔️
* Frontend de Testeo ✔️
* Documentación ✔️
* Copiar archivo a repositorio VPS## Instalación
1. Instalar [Node](https://nodejs.org/es/) y [npm](https://www.npmjs.com) en su ordenador.
2. Abrir una terminal en el directorio *Server*.
3. Ejecutar el comando ```$ npm install``` para instalar los módulos requeridos.## Configuración
1. Ingresar a [Google Console](https://console.cloud.google.com/).
2. Crear un nuevo proyecto.
3. En el panel izquierdo selecciónar *APIs y Servicios*, luego *Biblioteca*.
4. Buscar *Google Drive API* y habilitarla.
5. Volver al panel de *APIs y Servicios*.
6. Ir a la pestaña *Credenciales*, hacer click en *Crear credenciales* y seleccionar la opción *Clave de cuenta de servicio*.
7. Asignar un nombre y selecionar la función *Proyecto > Propietario*.
8. Seleccionar tipo de clave JSON, y hacer click en crear.
9. Se descargara un archivo JSON, el cual debe renombrar a *key.json* y ubicarlo en el directorio */conf* de la aplicación.
10. Hacer click en *Administrar cuentas de servicio* para ver el email del servicio.
11. Acceder a Google Drive con su cuenta normal y compartir los archivos y directorios que considere necesarios con la cuenta de servicio, otorgándole el permiso de propietario.
12. Modificar el puerto y contraseña de administrador a gusto, en el archivo conf.json.
13. Iniciar la aplicación ejecutando el comando ```$ node index.js```## Métodos API REST
1. [Inicio de sesión](#a)
2. [Cierre de sesión](#b)
3. [Listado de un directorio](#c)
4. [Copia de un archivo](#d)
5. [Mover un archivo](#e)
6. [Renombrar un archivo](#f)
7. [Crear un documento](#g)
8. [Crear un directorio](#h)
9. [Descargar PDF](#i)
10. [Descargar Archivo](#j)
11. [Crear permisos de archivo](#k)
12. [Eliminar permiso de archivo](#l)
13. [Modificar permisos de archivo](#m)
14. [Listar permisos de archivo](#n)
15. [Información de un permiso](#ñ)
16. [Listar comentarios de un archivo](#o)
17. [Listar cambios de un archivo](#p)
### Inicio de sesión : GET /login
-----------------------------------------------
Inicia sesión de administrador, comprueba que la contraseña sea igual a la almacenada en el archivo conf.json.##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
password
STRING
Contraseña de administrador.
##### Respuesta
Si todo concluye con éxito, almacena un token en una *cookie("token")* para manejar la sesión, y se envía la página de la interfaz al usuario.
### Cierre de sesión : GET /logout
-----------------------------------------------
Cierra la sesión del administrador.##### Entrada
Sin parámetros de entrada.
##### Respuesta
Redirige a la página de inicio.
### Listado de un directorio : GET /listDir
-----------------------------------------------Retorna una lista con la información de todos los archivos de un directorio.
Por defecto solo muestra archivos de tipo directorio y Google Docs. Se pueden agregar más tipos modificando el parámetro *mimeTypes* en el archivo *conf.json*. [Lista de MIME Types soportados.](https://developers.google.com/drive/api/v3/mime-types)##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del directorio que se quiere listar. El ID del directorio principal es root.
##### Respuesta
Retorna un arreglo de objetos en formato JSON con la información de cada archivo y directorio, donde cada objeto posee los siguientes parámetros:
Parámetro
Tipo
Descripción
id
STRING
ID del archivo o directorio.
name
STRING
Nombre del archivo o directorio.
mimeType
STRING
Tipo de archivo.
### Copia de un archivo : POST /copyFile
-----------------------------------------------Realiza una copia de un archivo en Google Drive.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo a copiar.
name
STRING
Nombre de la copia.
parentId
STRING
ID del directorio destino.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID de la copia.
name
STRING
Nombre de la copia.
mimeType
STRING
Tipo del archivo.
### Mover un archivo : PATCH /moveFile
-----------------------------------------------Mueve un archivo o directorio de Google Drive a otro directorio.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
parentId
STRING
ID del directorio destino.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del archivo o directorio.
name
STRING
Nombre del archivo.
mimeType
STRING
Tipo de archivo.
### Renombrar un archivo : PATCH /renameFile
-----------------------------------------------Cambia el nombre de un archivo o directorio de Google Drive.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo o directorio.
name
STRING
Nuevo nombre.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del archivo.
name
STRING
Nuevo nombre del archivo.
mimeType
STRING
Tipo del archivo.
### Crear un documento : POST /createDoc
-----------------------------------------------Crea un nuevo Google Document en blanco.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
name
STRING
Nombre del nuevo archivo
parentId
STRING
ID del directorio destino.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del nuevo archivo.
name
STRING
Nombre del archivo.
mimeType
STRING
Tipo del archivo.
### Crear un directorio : POST /createDir
-----------------------------------------------Crea un nuevo directorio en Google Drive.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
name
STRING
Nombre del nuevo directorio
parentId
STRING
ID del directorio destino.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del nuevo directorio.
name
STRING
Nombre del directorio.
mimeType
STRING
Tipo del archivo.
### Descargar PDF : GET /downloadPdf
-----------------------------------------------Descarga un documento de Google Drive en formato PDF, lo almacena en la carpeta *pdf* de la aplicación, y envía un URL de descarga al usuario.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del documento.
##### Respuesta
Retorna un URL STRING con el enlace de descarga del PDF.
```/downloadFile?name=nombre_del_archivo.pdf```
### Descargar Archivo : GET /downloadFile
-----------------------------------------------Descarga un documento ya almacenado en la carpeta *pdf*.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
name
STRING
Nombre del archivo.
##### Respuesta
Envía el archivo al usuario, como descarga.
### Crear permisos de archivo : POST /createFilePermission
-----------------------------------------------Crea un nuevo permiso de archivo para un usuario B.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
role
STRING
Rol del usuario. Ver roles permitidos.
emailAddress
STRING
Email del usuario B.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del permiso.
role
STRING
Rol del usuario B.
emailAddress
STRING
Email del usuario del permiso.
### Eliminar permiso de archivo : DELETE /deleteFilePermission
-----------------------------------------------Elimina un permiso dado a un archivo.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
permissionId
STRING
ID del permiso.
##### Respuesta
No retorna ningún dato.
### Modificar permisos de archivo : PATCH /updateFilePermission
-----------------------------------------------Permite cambiar el rol de un permiso ya existente.
##### Entrada
Se debe enviar un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
permissionId
STRING
ID del permiso.
role
STRING
Nuevo rol. Ver roles permitidos.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
id
STRING
ID del permiso.
role
STRING
Nuevo rol.
emailAddress
STRING
Email del usuario del permiso.
### Listar permisos de archivo : GET /listFilePermissions
-----------------------------------------------Lista todos los permisos otorgados a un archivo.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
##### Respuesta
Retorna un arreglo de objetos en formato JSON con la información de cada permiso, donde cada objeto posee los siguientes parámetros:
Parámetro
Tipo
Descripción
id
STRING
ID del permiso.
role
STRING
Rol del permiso.
emailAddress
STRING
Email del usuario del permiso.
### Información de un permiso : GET /permissionInfo
-----------------------------------------------Entrega información de un permiso.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
permissionId
STRING
ID del permiso.
##### Respuesta
Retorna un objeto en formato JSON con los siguientes parámetros:
Parámetro
Tipo
Descripción
id
STRING
ID del permiso.
role
STRING
Rol del permiso.
emailAddress
STRING
Email del usuario del permiso.
### Listar comentarios de un archivo : GET /listFileComments
-----------------------------------------------Retorna los comentarios de un archivo.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
##### Respuesta
Retorna un arreglo de objetos en formato JSON, donde cada objeto tiene la siguiente estructura:
[Ver estructura.](https://developers.google.com/drive/api/v3/reference/comments#resource)
### Listar cambios de un archivo : GET /listFileChanges
-----------------------------------------------Retorna todos los cambios que Google almacena de un documento.
##### Entrada
Parámetros del GET request:
Parámetro
Tipo
Descripción
fileId
STRING
ID del archivo.
##### Respuesta
Retorna un arreglo de objetos en formato JSON, donde cada objeto tiene la siguiente estructura:
[Ver estructura.](https://developers.google.com/drive/api/v3/reference/revisions#resource)