memory-card
Version:
ES6 Map like Async API, with Swagger API Backend Support.
128 lines • 4.06 kB
JavaScript
/// <reference path="./types.d.ts" />
import ObsClient from 'esdk-obs-nodejs';
import { log, } from '../config.js';
import { StorageBackend, } from './backend.js';
class StorageObs extends StorageBackend {
obs;
constructor(name, options) {
log.verbose('StorageObs', 'constructor()');
options.type = 'obs';
super(name, options);
options = options;
this.obs = new ObsClient({
access_key_id: options.accessKeyId,
secret_access_key: options.secretAccessKey,
server: options.server,
});
}
toString() {
const text = [
this.constructor.name,
'<',
this.name,
'>',
].join('');
return text;
}
async save(payload) {
log.verbose('StorageObs', 'save()');
const options = this.options;
await this.putObject({
Body: JSON.stringify(payload),
Bucket: options.bucket,
Key: this.name,
});
}
async load() {
log.verbose('StorageObs', 'load()');
try {
const result = await this.getObject();
if (!result) {
return {};
}
log.info('presss', result);
return result;
}
catch (e) {
log.warn('StorageObs', 'load() exception: %s', e);
return {};
}
}
async destroy() {
log.verbose('StorageObs', 'destroy()');
await this.deleteObject();
}
async putObject(payload) {
const options = this.options;
return new Promise((resolve, reject) => {
this.obs.putObject({
Body: JSON.stringify(payload),
Bucket: options.bucket,
Key: this.name,
}, (err, result) => {
if (err) {
reject(err);
}
else {
log.verbose('obs putObject result', JSON.stringify(result));
if (result.CommonMsg.Status === 200) {
resolve();
}
else {
reject(new Error('obs putObject error'));
}
}
});
});
}
async getObject() {
const options = this.options;
return new Promise((resolve, reject) => {
this.obs.getObject({
Bucket: options.bucket,
Key: this.name,
}, (err, result) => {
if (err) {
reject(err);
}
else {
log.verbose('obs getObject result', JSON.stringify(result.CommonMsg));
if (result.CommonMsg.Status < 300 && result.InterfaceResult) {
const buffer = result.InterfaceResult.Content;
const str = buffer.toString();
const obj = JSON.parse(str);
resolve((JSON.parse(obj.Body)));
}
else {
reject(new Error('obs getObject error'));
}
}
});
});
}
async deleteObject() {
const options = this.options;
return new Promise((resolve, reject) => {
this.obs.putObject({
Bucket: options.bucket,
Key: this.name,
}, (err, result) => {
if (err) {
reject(err);
}
else {
log.verbose('obs putObject result', JSON.stringify(result));
if (result.CommonMsg.Status < 300) {
resolve();
}
else {
reject(new Error('obs deleteObject error'));
}
}
});
});
}
}
export default StorageObs;
export { StorageObs, };
//# sourceMappingURL=obs.js.map