lemon-engine
Version:
Lemon Engine Module to Synchronize Node over DynamoDB + ElastiCache + Elasticsearch by [lemoncloud](https://lemoncloud.io)
115 lines • 5.12 kB
JavaScript
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
;