0.1.1 • Published 6 years ago

moleculer-flydrive v0.1.1

Weekly downloads
2
License
MIT
Repository
-
Last release
6 years ago

Moleculer logo

moleculer-flydrive

Fluent storage manager service with Node Flydrive.
You need to install @slynova/node-flydrive

Features

  • Local
  • Amazon S3 (You need to install aws-sdk package to be able to use this driver)
  • Digital Ocean Spaces (You need to install aws-sdk package to be able to use this driver)
  • FTP (You need to install jsftp package to be able to use this driver)
  • Possibility to register a custome driver like Google Drive driver

Instalation

npm install moleculer-flydrive

Usage

With no settings (it will mount local storage driver by default with the current directory as root dir)

"use strict"
const FlyDrive = require("moleculer-flydrive");
const { ServiceBroker } = require("moleculer");
const broker = new ServiceBroker();
broker.createService(FlyDrive(),{
  actions: {
    async someAction(ctx){
      //let result = await this.storage.disk().exists("some-file.txt");
      //let result = await this.storage.disk("local").exists("some-file.txt");
      let result = await this.storage.exists("some-file.txt");//will use the default storage defined
      if(result){
        await this.storage.delete("some-file.txt");
      }
    }
  }
})

With settings

"use strict"
const FlyDrive = require("moleculer-flydrive");
const { ServiceBroker } = require("moleculer");
const broker = new ServiceBroker();
//when true passed as param the service will try to create the root dir
broker.createService(FlyDrive(true),{
  settings:{
    STORAGE_ROOT:"<a path>",
    storageConfig:{
      default: "local",
      disks:{
        local: {
          driver: "local"
        },
        s3: {
          driver: 's3',
          key: 'AWS_S3_KEY',
          secret: 'AWS_S3_SECRET',
          region: 'AWS_S3_REGION',
          bucket: 'AWS_S3_BUCKET'
        },
        ftp: {
          driver: 'ftp',
          host: 'FTP_HOST',
          port: 21,
          user: 'FTP_USER',
          pass: 'FTP_PASS',
          longLive: false
        },
      }
    }
  },
  actions: {
    async someAction(ctx){
      //let result = await this.storage.disk().exists("some-file.txt");
      //let result = await this.storage.disk("s3").exists("some-file.txt");
      let result = await this.storage.exists("some-file.txt");//will use the default storage defined
      if(result){
        await this.storage.delete("some-file.txt");
      }
    }
  }
})

Register a custom drive

"use strict"
const FlyDrive = require("moleculer-flydrive");
const GoogleDrive = require("flydrive-google-drive");
const { ServiceBroker } = require("moleculer");
const broker = new ServiceBroker();
//when true passed as param the service will try to create the root dir
broker.createService(FlyDrive(true),{
  settings:{
    STORAGE_ROOT:"<a path>",
    defaultStorage: "local",
    storageConfig:{
      disks:{
        local: {
          driver: "local"
        },
        s3: {
          driver: 's3',
          key: 'AWS_S3_KEY',
          secret: 'AWS_S3_SECRET',
          region: 'AWS_S3_REGION',
          bucket: 'AWS_S3_BUCKET'
        },
        ftp: {
          driver: 'ftp',
          host: 'FTP_HOST',
          port: 21,
          user: 'FTP_USER',
          pass: 'FTP_PASS',
          longLive: false
        },
        //register the driver configuration
        drive: {
          driver: "drive",
          clientId: "GOOGLE_DRIVE_CLIENT_ID",
          clientSecret: "GOOGLE_DRIVE_CLIENT_SECRET",
          redirectUrl: "GOOGLE_DRIVE_REDIRECT_URL",
          access_token: "GOOGLE_DRIVE_ACCESS_TOKEN",
          refresh_token: "GOOGLE_DRIVE_REFRESH_TOKEN"
        }
      },
      //register the driver hanlder
      customDrivers: {
        drive: GoogleDrive
      }
    }
  }
})

Settings

PropertyTypeDescription
STORAGE_ROOTStringThe root directory for local storage driver
defaultStorageStringthe default driver to use, if not sepecified, local will be used
storageConfigObjectthe configuration object, refer to Configuration object for more details

Methods

NameParamsResultDescription
diskString or undefinedStorage instanceget a specifique disk storage or the default storage if no param passes.
extendsname:String,driver: Object constructorthe StorageManager instanceextends the storage manager, the new driver configuration should have been defined in configuration. Refer to How to register custome driver

Test

You can run npm run test to run tests

Licence

MIT