node-red-google-drive-storage 1.0.1

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

npm install node-red-google-drive-storage

Node-RED Google Drive Integration

License

Модуль Node-RED для загрузки, удаления и управления файлами на Google Диске. Поддерживает два метода аутентификации: Service Account и OAuth 2.0.

Содержание

  1. Описание
  2. Установка
  3. Настройка
  4. Использование
  5. Примеры
  6. Лицензия

Описание

Этот модуль предоставляет три узла для работы с Google Диском:

  1. Конфигурационный узел: Настройка аутентификации (Service Account или OAuth 2.0).
  2. Добавление файлов: Загрузка файлов на Google Диск.
  3. Удаление файлов: Удаление файлов с Google Диска.

Файлы автоматически становятся доступными для просмотра после загрузки.


Установка

  1. Убедитесь, что у вас установлен Node-RED:

    npm install -g node-red
    
  2. Установите модуль:

    npm install node-red-google-drive-storage
    
  3. Перезапустите Node-RED:

    node-red
    

Настройка

1. Создание учетных данных Google API

Для работы с Google Диском необходимо создать учетные данные в Google Cloud Console:

  • Service Account:

    1. Создайте новый проект в Google Cloud Console.
    2. Активируйте API Google Drive.
    3. Создайте Service Account и скачайте JSON-файл с учетными данными.
  • OAuth 2.0:

    1. Создайте OAuth 2.0 Client ID.
    2. Получите Refresh Token через процесс авторизации.

2. Настройка узлов

Конфигурационный узел

  1. Добавьте конфигурационный узел (google-drive-config) в панель конфигурации.
  2. Выберите тип аутентификации:
    • Для Service Account: Вставьте содержимое JSON-файла в поле "Учетные данные Service Account".
    • Для OAuth 2.0: Введите Client ID, Client Secret, Redirect URI и Refresh Token.

Использование

Конфигурационный узел

  • Название: google-drive-config
  • Описание: Настройка аутентификации для взаимодействия с Google API.
  • Параметры:
    • Тип аутентификации: Service Account или OAuth 2.0.
    • Учетные данные: JSON для Service Account или параметры OAuth 2.0.

Добавление файлов

  • Название: google-drive-upload
  • Описание: Загружает файлы на Google Диск.
  • Входные данные:
    • msg.payload: Файл в формате Buffer.
    • msg.fileName (опционально): Имя файла.
    • msg.mimeType (опционально): MIME-тип файла.
  • Выходные данные:
    • msg.fileId: ID загруженного файла.
    • msg.webViewLink: Ссылка для просмотра файла.

Удаление файлов

  • Название: google-drive-delete
  • Описание: Удаляет файлы с Google Диска.
  • Входные данные:
    • msg.fileId: ID файла для удаления.
  • Выходные данные:
    • msg.deletedFileId: ID удаленного файла.

Примеры

1. Загрузка файла через HTTP POST

Создайте Flow для загрузки файла через HTML-форму:

[
    {
        "id": "a1",
        "type": "http in",
        "z": "flow",
        "name": "GET /",
        "url": "/",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 150,
        "y": 100,
        "wires": [["a2"]]
    },
    {
        "id": "a2",
        "type": "template",
        "z": "flow",
        "name": "HTML Form",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "<form id=\"uploadForm\" enctype=\"multipart/form-data\" method=\"POST\" action=\"/upload\">\n    <label for=\"file\">Выберите файл:</label>\n    <input type=\"file\" id=\"file\" name=\"file\" accept=\"image/*\" required>\n    <br><br>\n    <button type=\"submit\">Загрузить</button>\n</form>",
        "output": "str",
        "x": 350,
        "y": 100,
        "wires": [["a3"]]
    },
    {
        "id": "a3",
        "type": "http response",
        "z": "flow",
        "name": "",
        "statusCode": "",
        "headers": {},
        "x": 550,
        "y": 100,
        "wires": []
    },
    {
        "id": "b1",
        "type": "http in",
        "z": "flow",
        "name": "POST /upload",
        "url": "/upload",
        "method": "post",
        "upload": true,
        "swaggerDoc": "",
        "x": 150,
        "y": 200,
        "wires": [["b2"]]
    },
    {
        "id": "b2",
        "type": "function",
        "z": "flow",
        "name": "Process File",
        "func": "const file = msg.req.files.file;\nmsg.payload = Buffer.from(file.data);\nmsg.fileName = file.name;\nmsg.mimeType = file.type;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 350,
        "y": 200,
        "wires": [["b3"]]
    },
    {
        "id": "b3",
        "type": "google-drive-upload",
        "z": "flow",
        "name": "Upload to Google Drive",
        "googleDriveConfig": "config-node-id", // Укажите ID конфигурационного узла
        "fileName": "",
        "x": 550,
        "y": 200,
        "wires": [["b4"]]
    },
    {
        "id": "b4",
        "type": "http response",
        "z": "flow",
        "name": "",
        "statusCode": "200",
        "headers": {},
        "x": 750,
        "y": 200,
        "wires": []
    }
]

2. Удаление файла

Создайте Flow для удаления файла по его ID:

[
    {
        "id": "c1",
        "type": "inject",
        "z": "flow",
        "name": "Delete File",
        "props": [
            { "p": "fileId", "v": "1abc123...", "vt": "str" }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 150,
        "y": 300,
        "wires": [["c2"]]
    },
    {
        "id": "c2",
        "type": "google-drive-delete",
        "z": "flow",
        "name": "Delete from Google Drive",
        "googleDriveConfig": "config-node-id", // Укажите ID конфигурационного узла
        "fileId": "",
        "x": 350,
        "y": 300,
        "wires": [["c3"]]
    },
    {
        "id": "c3",
        "type": "debug",
        "z": "flow",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 550,
        "y": 300,
        "wires": []
    }
]

Лицензия

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.


Поддержка

Если у вас возникли вопросы или проблемы, создайте issue в репозитории или свяжитесь с автором.


Автор: Borovlioff GitHub: https://github.com/borovlioff/node-red-google-drive-storage

Node Info

Version: 1.0.1
Updated 1 month ago
License: ISC
Rating: 1.0 1

Categories

Actions

Rate:

Downloads

21 in the last week

Nodes

  • google-drive-config
  • google-drive-upload
  • google-drive-delete

Keywords

  • node-red
  • google-drive
  • storage

Maintainers