UNPKG

lemon-engine

Version:

Lemon Engine Module to Synchronize Node over DynamoDB + ElastiCache + Elasticsearch by [lemoncloud](https://lemoncloud.io)

115 lines 5.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var http_proxy_1 = __importDefault(require("./http-proxy")); var maker = function (_$, name, options) { name = name || 'S3'; var $U = _$.U; // re-use global instance (utils). var $_ = _$._; // re-use global instance (_ lodash). if (!$U) throw new Error('$U is required!'); if (!$_) throw new Error('$_ is required!'); var NS = $U.NS(name, 'yellow'); // NAMESPACE TO BE PRINTED. //! load common functions var _log = _$.log; var _inf = _$.inf; var _err = _$.err; /** **************************************************************************************************************** * Internal Proxy Function ** ****************************************************************************************************************/ var ENDPOINT = $U.env('S3_ENDPOINT', typeof options == 'string' ? options : ''); var $proxy = function () { if (!ENDPOINT) throw new Error('env:S3_ENDPOINT is required!'); var SVC = 'X' + name; var $SVC = _$(SVC, null); return $SVC ? $SVC : http_proxy_1.default(_$, SVC, ENDPOINT); // re-use proxy by name }; /** **************************************************************************************************************** * Main Implementation. ** ****************************************************************************************************************/ var thiz = new (/** @class */ (function () { function class_1() { this.name = function () { return "s3-proxy:" + name; }; this.endpoint = function () { return ENDPOINT; }; } /** * Upload to S3. * * @param {*} bucketId bucket-id * @param {*} fileName file-name path * @param {*} fileStream * @param {*} contentType */ class_1.prototype.do_upload = function (bucketId, fileName, fileStream, contentType) { if (!bucketId) return Promise.reject(new Error('bucket is required!')); if (!fileName) return Promise.reject(new Error('filename is required!')); if (!fileStream) return Promise.reject(new Error('filestream is required!')); contentType = contentType || ''; return $proxy() .do_post(bucketId, '0', 'upload', undefined, { fileName: fileName, fileStream: fileStream, contentType: contentType }) .then(function (_) { return _.result; }); }; /** * Get Data * * @param {*} bucketId bucket-id * @param {*} fileName file-name path */ class_1.prototype.do_get_object = function (bucketId, fileName) { if (!bucketId) return Promise.reject(new Error('bucket is required!')); if (!fileName) return Promise.reject(new Error('filename is required!')); return $proxy() .do_post(bucketId, '0', 'get-object', undefined, { fileName: fileName }) .then(function (_) { return _.result; }); }; /** * Use `s3-api.do_post_multipart()`. * * @param {string} bucket bucket-name (see backbone) * @param {string} name parent path. * @param {base64} file file (base64 encoded or ...) * @param {string} type content-type * @param {string} path parent folder. * @param {object} tags Tagging */ class_1.prototype.do_save = function (bucket, name, file, type, path, tags) { if (!bucket) return Promise.reject(new Error('bucket is required!')); if (!name) return Promise.reject(new Error('filename is required!')); if (!file) return Promise.reject(new Error('filestream is required!')); path = path || ''; type = type || ''; var body = { path: path, name: name, file: file, type: type }; if (tags) body.tags = tags; return $proxy() .do_post(bucket, '0', 'multipart', undefined, body) .then(function (_) { return _.result; }); }; //! self test. class_1.prototype.do_test_self = function (options) { options = options || {}; _log(NS, 'do_test_self()... param=', options); var $param = Object.assign({}, options || {}); return $proxy() .do_get('#', '0', 'test-self', $param) .then(function (_) { return _.result; }); }; return class_1; }()))(); //! create & register service. return _$(name, thiz); }; exports.default = maker; //# sourceMappingURL=s3-proxy.js.map