Package Exports
- swift
- swift/context
- swift/storage
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (swift) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Openstack swift client API with ES7 async/await design.
Installation
$ npm install swift
API/services (auth3)
Auth3 API will login to your openstack and use a X-Auth-Token in all operations. Make sure to renew (setInterval) the auth token periodicaly.
credentials
"use strict";
module.exports = {
authUrl : "https://auth.cloud.ovh.net/v3", // default
username : "OpenstackUsername", // required
password : "OpenstackPassword", // required
tenantId : "OpenstackProjectId", // one of tenantId or tenantName is required
tenantName : "OpenstackProjectName", // one of tenantId or tenantName is required
region: "WAW", // default "GRA3"
};
object-store
"use strict";
const fs = require('fs');
const Context = require('swift/context');
const storage = require('swift/storage');
const pipe = require('nyks/stream/pipe');
const creds = require('./credentials');
class foo {
async run(){
// init token
let container = 'mediaprivate';
var ctx = await Context.build(creds);
var files = await storage.toggleMode(ctx, container, ".r:*,.rlistings");
var headers = await storage.showContainer(ctx, container);
var remote = await storage.putFile(ctx, 'boucs.jpg', container, 'bouc.jpg');
var local = fs.createWriteStream('tmp.jpg');
var remote = storage.download(ctx, container, 'bouc.jpg');
await pipe(remote, local);
var remote = await storage.deleteFile(ctx, container, 'bouc.jpg');
var files = await storage.getFileList(ctx, container);
console.log({files, remote});
}
}
module.exports = foo;
API/services (meta-temp-url-key)
Using a container meta-temp key, you can upload, retrieve or delete specific files in your container. On a CAS designed container, this should be considered as a best practice against a full container access.
object-store
"use strict";
const fs = require('fs');
const Context = require('swift/context');
const storage = require('swift/storage');
const pipe = require('nyks/stream/pipe');
const creds = {
"containers" : {
"mediaprivate" : {
"endpoint" : "https://someopenstackswifthost/v1/AUTH_PROJECTID/mediaprivate",
"temp-url-key" : "somesecret",
}
}
};
class foo {
async run(){
let container = 'mediaprivate';
// does not init token, as no username is provided
var ctx = await Context.build(creds);
//please note that container level API won't work
//var files = await storage.toggleMode(ctx, container, ".r:*,.rlistings");
//var headers = await storage.showContainer(ctx, container);
var remote = await storage.putFile(ctx, 'boucs.jpg', container, 'bouc.jpg');
var local = fs.createWriteStream('tmp.jpg');
//download through tempURL
var remote = storage.download(ctx, container, 'bouc.jpg');
await pipe(remote, local);
var remote = await storage.deleteFile(ctx, container, 'bouc.jpg');
var files = await storage.getFileList(ctx, container);
console.log({files, remote});
}
}
module.exports = foo;