memory-card
Version:
ES6 Map like Async API, with Swagger API Backend Support.
134 lines • 4.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StorageObs = void 0;
/// <reference path="./types.d.ts" />
const esdk_obs_nodejs_1 = __importDefault(require("esdk-obs-nodejs"));
const config_js_1 = require("../config.js");
const backend_js_1 = require("./backend.js");
class StorageObs extends backend_js_1.StorageBackend {
obs;
constructor(name, options) {
config_js_1.log.verbose('StorageObs', 'constructor()');
options.type = 'obs';
super(name, options);
options = options;
this.obs = new esdk_obs_nodejs_1.default({
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) {
config_js_1.log.verbose('StorageObs', 'save()');
const options = this.options;
await this.putObject({
Body: JSON.stringify(payload),
Bucket: options.bucket,
Key: this.name,
});
}
async load() {
config_js_1.log.verbose('StorageObs', 'load()');
try {
const result = await this.getObject();
if (!result) {
return {};
}
config_js_1.log.info('presss', result);
return result;
}
catch (e) {
config_js_1.log.warn('StorageObs', 'load() exception: %s', e);
return {};
}
}
async destroy() {
config_js_1.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 {
config_js_1.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 {
config_js_1.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 {
config_js_1.log.verbose('obs putObject result', JSON.stringify(result));
if (result.CommonMsg.Status < 300) {
resolve();
}
else {
reject(new Error('obs deleteObject error'));
}
}
});
});
}
}
exports.StorageObs = StorageObs;
exports.default = StorageObs;
//# sourceMappingURL=obs.js.map