loopback-component-storage/README.md

2.3 KiB

asteroid-storage-service

Aseteroid Storage Service

Storage

The asteroid-storage-service service is designed to make it easy to upload and download files to various infrastructure providers. Special attention has been paid so that methods are streams and pipe-capable.

To get started with a asteroid-storage-service client just create one:

  var client = require('asteroid-storage-service').createClient({
    //
    // The name of the provider (e.g. "file")
    //
    provider: 'provider-name',
  
    //
    // ... Provider specific credentials
    //
  });

Each compute provider takes different credentials to authenticate; these details about each specific provider can be found below:

Each instance of storage.Client returned from storage.createClient has a set of uniform APIs:

Container

  • client.getContainers(function (err, containers) { })
  • client.createContainer(options, function (err, container) { })
  • client.destroyContainer(containerName, function (err) { })
  • client.getContainer(containerName, function (err, container) { })

File

  • client.upload(options, function (err) { })
  • client.download(options, function (err) { })
  • client.getFiles(container, function (err, files) { })
  • client.getFile(container, file, function (err, server) { })
  • client.removeFile(container, file, function (err) { })

Both the .upload(options) and .download(options) have had careful attention paid to make sure they are pipe and stream capable:

Upload a File

  var storage = require('asteroid-storage-service'),
      fs = require('fs');
  
  var client = storage.createClient({ /* ... */ });
  
  fs.createReadStream('a-file.txt').pipe(client.upload({
    container: 'a-container',
    remote: 'remote-file-name.txt'
  }));

Download a File

  var storage = require('asteroid-storage-service'),
      fs = require('fs');
  
  var client = storage.createClient({ /* ... */ });
  
  client.download({
    container: 'a-container',
    remote: 'remote-file-name.txt'
  }).pipe(fs.createWriteStream('a-file.txt'));