A common Object Storage API
npm install osapi# "osapi" or "ceph"
__Common and CEPH Compatible Object Storage API__
> Other Languages / 简体中文 / 繁體中文
> If links in this document not avaiable, please access README on GitHub directly.
__Milestone version 1.0.0 is released.__ The package now can be used to access different object storage servers.
* Table Of Contents
* Get Started
* Get Started With OpenStack Swift Server
* Get Started With AWS S3 Server
* API
* Terms
* About
* References
The name osapi is abbreviation of Object Storage Application Programming Interface. And, because this API is compatible with CEPH object storage, so it is also named __ceph__. You may install and require one of osapi and ceph at your will. For simplicity, we use osapi hereinafter.
__osapi__ is based on OpenStack SWIFT API and Amazon S3 API. Before osapi@1.0.0, the package offers a standalone sub module for each style. Since 1.0.0, the two sub modules are nearly compatible with each other. Both of them implements a common interface __Connection__.
## Table Of Contents
* Get Started
* Get Started In OpenStack Swift Style
* Get Started In AWS S3 Style
* Documentations
* Terms
* About
* References
## Links
## Get Started
``javascript
const osapi = require('osapi');
let conn = osapi.createConnection({
endPoint : 'http://storage.example.com/',
subuser : 'userName:subUserName',
key : '380289ba59473a368c593c1f1de6efb0380289ba5',
container : 'containerName',
});
conn.createObject('hello/world', 'Hello world!', (err) => {
// ...
});
conn.readObject('hello/world', (err, data) => {
// ...
data.contentType;
data.buffer;
});
`
### Get Started With OpenStack Swift Server
`javascript
const swift = require('osapi/swift');
let conn = new swift.Connection({
endPoint : 'http://storage.example.com/',
subuser : 'userName:subUserName',
key : '380289ba59473a368c593c1f1de6efb0380289ba5',
// generally 40 characters
tempURLKey : '380289ba59473a368c593c1f1de6efb0',
// generally 32 characters
container : 'containerName',
});
conn.createObject('hello/world', 'Hello world!', (err) => {
// ...
});
conn.readObject('hello/world', (err, data) => {
// ...
data.contentType;
data.buffer;
});
`
### Get Started With AWS S3 Server
`javascript
const s3 = require('osapi/s3');
let conn = new s3.Connection({
endPoint : 'http://storage.example.com/',
accessKey : '380289ba59473a368c59',
// 20 characters
secretAccessKey : '380289ba59473a368c593c1f1de6efb0380289ba5',
// 40 characters
bucket : 'bucketName',
});
let options = {
name: 'hello/world',
meta: { / self defined meta info / }
};
let content = 'Hello world!';
conn.createObject(options, content)
.then(ret => {
// ...
})
.catch(err => {
// ...
});
conn.readObject('hello/world', (err, data) => {
// ...
data.contentType;
data.buffer;
data.meta;
});
``
## API
Please read documentation.
Amazon Simple Storage Service (S3) and OpenStack Swift are similiar but still two different things.
| S3 | SWIFT | meaning |
| :---------------- | :------------- | :------------- |
| bucket | container | An container belongs to one account and is used to store objects. |
| access_key | - | Unique token used to identify an account. |
| secret\_secret\_key | - | Secret token accompanying the access_key and used to verify the requests. |
| - | key | Secret token used to generate access token for current subuser. |
| - | temp\_url\_key | Secret token used to generate temporary downloading URLs for objects. |
| - | user | Account. |
| - | subuser | User under specified account. |
## About
For convenience, this package is published in following names (alias):
* ceph
* osapi