UNPKG

memory-card

Version:

ES6 Map like Async API, with Swagger API Backend Support.

128 lines 4.06 kB
/// <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