Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ryouaki/nodejs-swiftclient

The promise support client for openstack with nodejs
https://github.com/ryouaki/nodejs-swiftclient

client nodejs openstack-swift promise

Last synced: about 1 month ago
JSON representation

The promise support client for openstack with nodejs

Awesome Lists containing this project

README

        

[![npm downloads](https://img.shields.io/npm/dm/swift-nodeclient.svg?style=flat-square)](http://npm-stat.com/charts.html?package=swift-nodeclient)

# swift-nodeclient
The promise support client for openstack with nodejs

# How to use it.
[example](/example/index.js)

# How to install it.
```sh
$ npm i swift-nodeclient -save
```

# How to run the example.
```sh
$ node ./example/index.js
```

# API
```js
const client = new NodeSwift({
host: "127.0.0.1", // the location of swift server, if not assign port ,will only use host option.
port: 12345, // the port of swift server
authUrl: '' // the auth url .default /auth/v1.0
});

/**
* Login
*
* @param {String|required} account
* @param {String|required} user
* @param {String|required} password
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.login({
account: 'test',
user:'tester',
password:'testing'
}).then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Get Container list
*
* @return {Promise} success
* {
* "status": "ok",
* "msg": {
* "bytesUsed": "545636",
* "containerCount": "2",
* "objectCount": "2",
* "data": [
* "test",
* "test1"
* ]
* }
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.getContainers().then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Create a new Container
*
* @param {String|required} container
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.newContainer('test').then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Create a new Container
* for option items ref: https://docs.openstack.org/swift/latest/overview_acl.html#container-acls
*
* @param {String|required} container
* @param {Object|option} { headers: {'X-Container-Read': '.r:* | .r:' } }
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.newContainer('test1', {
headers: {
'X-Container-Read': '.r:*'
}
}).then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Delete a Container
*
* @param {String|required} container
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.delContainer('test1').then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Create a text Object
*
* @param {String|required} container
* @param {String|required} object
* @param {String|Stream|required} data
* @param {Object|option} { headers: {'Content-Type': 'text/html' } }
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.newObject('test', 'object1', 'hello world', {
headers: {
'Content-Type': 'text/html'
}
}).then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

const stream = fs.createReadStream('./example/WechatIMG127.jpeg');
/**
* Create a text Object
*
* @param {String|required} container
* @param {String|required} object
* @param {String|Stream|required} data
* @param {Object|option} { headers: {'Content-Type': 'image/jpeg' } }
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.newObject('test', 'object2', stream, {
headers: {
'Content-Type': 'image/jpeg'
}
}).then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Update a Object
*
* @param {String|required} container
* @param {String|required} object
* @param {String|Stream|required} data
* @param {Object|option} { headers: {'Content-Type': 'image/jpeg' } }
*
* @return {Promise} success
* {
* status: 'ok',
* msg: null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.updateObject('test', 'object1', 'hello world two', {
headers: {
'Content-Type': 'text/html'
}
}).then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Get object list
*
* @param {String|required} container
*
* @return {Promise} success
* {
* "status": "ok",
* "msg": {
* "bytesUsed": "545636",
* "objectCount": "2",
* "data": [
* "test",
* "test1"
* ]
* }
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.getObjects('test').then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* Delete a Object
*
* @param {String|required} container
* @param {String|required} object
*
* @return {Promise} success
* {
* "status": "ok",
* "msg": null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.delObject('test', 'object1').then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})

/**
* copy a Object to a new path
*
* @param {String|required} fromContainer
* @param {String|required} fromobject
* @param {String|required} toContainer
* @param {String|required} toObject
*
* @return {Promise} success
* {
* "status": "ok",
* "msg": null
* }
* @return {Promise} failed
* {
* status: 'ng',
* msg: {...}
* }
*/
await client.copyObject('test', 'object2', 'test1', 'object1').then((d) => {
printObj(d);
}).catch((e) => {
printErr(e);
})
```