loopback-storage-service
v1.0.4
Published
Loopback Storage Service
Downloads
1,078
Readme
loopback-storage-service
LoopBack storage service provides Node.js and REST APIs to manage binary contents using pluggable storage providers, such as local file systems, Amazon S3, or Rackspace cloud files. We use pkgcloud to support the cloud based storage services including:
- Amazon
- Rackspace
- Openstack
- Azure
The binary artifacts are organized with containers and files. A container is the collection of files. Each file will belong to a container.
Define a model with the loopback-storage-service connector
LoopBack exposes the APIs using a model that is attached to a data source configured with the loopback-storage-service connector.
var ds = loopback.createDataSource({
connector: require('loopback-storage-service'),
provider: 'filesystem',
root: path.join(__dirname, 'storage')
});
var container = ds.createModel('container');
The following methods are mixed into the model class:
getContainers(cb): List all containers
createContainer(options, cb): Create a new container
destroyContainer(container, cb): Destroy an existing container
getContainer(container, cb): Look up a container by name
uploadStream(container, file, options, cb): Get the stream for uploading
downloadStream(container, file, options, cb): Get the stream for downloading
getFiles(container, download, cb): List all files within the given container
getFile(container, file, cb): Look up a file by name within the given container
removeFile(container, file, cb): Remove a file by name within the given container
upload(req, res, cb): Handle the file upload at the server side
download(container, file, res, cb): Handle the file download at the server side
Configure the storage providers
Each storage provider takes different settings; these details about each specific provider can be found below:
Local File System
{ provider: 'filesystem', root: '/tmp/storage' }
Amazon
{ provider: 'amazon', key: '...', keyId: '...' }
Rackspace
{ provider: 'rackspace', username: '...', apiKey: '...' }
OpenStack
{ provider: 'openstack', username: 'your-user-name', password: 'your-password', authUrl: 'https://your-identity-service' }
Azure
{ provider: 'azure', storageAccount: "test-storage-account", // Name of your storage account storageAccessKey: "test-storage-access-key" // Access key for storage account }
REST APIs
- GET /api/containers
List all containers
- GET /api/containers/:container
Get information about a container by name
- POST /api/containers
Create a new container
- DELETE /api/containers/:container
Delete an existing container by name
- GET /api/containers/:container/files
List all files within a given container by name
- GET /api/containers/:container/files/:file
Get information for a file within a given container by name
- DELETE /api/containers/:container/files/:file
Delete a file within a given container by name
- POST /api/containers/:container/upload
Upload one or more files into the given container by name. The request body should use multipart/form-data which the file input type for HTML uses.
- GET /api/containers/:container/download/:file
Download a file within a given container by name