meteor-interface
Version:
Simple Content Management System to generate your administration interface for Meteor and React.
301 lines (253 loc) • 12.5 kB
JavaScript
;
var _S3_config = require("./S3_config");
var _core = require("../../lib/core");
var _configuration = _interopRequireDefault(require("../../lib/configuration"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _next(value) { step("next", value); } function _throw(err) { step("throw", err); } _next(); }); }; }
Meteor.methods({
'interface.media.list.directories': function () {
var _interfaceMediaListDirectories = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(_ref) {
var path, config, _config$roles, roles, _config$media_roles, media_roles, isAuthorized, interfaceSettings, AWSBucket, AWSRegion, s3params, link, client, results;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
path = _ref.path;
config = _configuration.default.get(); // Extract datas from config
_config$roles = config.roles, roles = _config$roles === void 0 ? [] : _config$roles, _config$media_roles = config.media_roles, media_roles = _config$media_roles === void 0 ? [] : _config$media_roles;
isAuthorized = Roles.userIsInRole(this.userId, roles);
if (isAuthorized) {
_context.next = 6;
break;
}
throw new Meteor.Error(500, "You are not authorized to do this action.");
case 6:
interfaceSettings = _core.InterfaceCollections.settings.findOne();
AWSBucket = interfaceSettings.AWSBucket, AWSRegion = interfaceSettings.AWSRegion;
s3params = {
Bucket: AWSBucket,
MaxKeys: 100,
Delimiter: '/',
Prefix: path
};
link = "https://s3-".concat(AWSRegion, ".amazonaws.com/").concat(AWSBucket, "/");
_context.prev = 10;
_context.next = 13;
return (0, _S3_config.S3_Client)();
case 13:
client = _context.sent;
results = new Promise(function (resolve, reject) {
client.listObjectsV2(s3params, function (err, data) {
if (err) {
resolve({
err: err
});
}
resolve(_objectSpread({}, data, {
link: link
}));
});
});
return _context.abrupt("return", results);
case 18:
_context.prev = 18;
_context.t0 = _context["catch"](10);
throw new Meteor.Error(_context.t0.statusCode, _context.t0.message);
case 21:
case "end":
return _context.stop();
}
}
}, _callee, this, [[10, 18]]);
}));
return function interfaceMediaListDirectories(_x) {
return _interfaceMediaListDirectories.apply(this, arguments);
};
}(),
'interface.media.create.directory': function () {
var _interfaceMediaCreateDirectory = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee2(_ref2) {
var name, config, _config$roles2, roles, _config$media_roles2, media_roles, isAuthorized, interfaceSettings, AWSBucket, AWSRegion, s3params, link, client, results;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
name = _ref2.name;
config = _configuration.default.get(); // Extract datas from config
_config$roles2 = config.roles, roles = _config$roles2 === void 0 ? [] : _config$roles2, _config$media_roles2 = config.media_roles, media_roles = _config$media_roles2 === void 0 ? [] : _config$media_roles2;
isAuthorized = Roles.userIsInRole(this.userId, media_roles);
if (isAuthorized) {
_context2.next = 6;
break;
}
throw new Meteor.Error(500, "You are not authorized to do this action.");
case 6:
interfaceSettings = _core.InterfaceCollections.settings.findOne();
AWSBucket = interfaceSettings.AWSBucket, AWSRegion = interfaceSettings.AWSRegion;
s3params = {
Bucket: AWSBucket,
Key: "".concat(name, "/")
};
link = "https://s3-".concat(AWSRegion, ".amazonaws.com/").concat(AWSBucket, "/");
_context2.prev = 10;
_context2.next = 13;
return (0, _S3_config.S3_Client)();
case 13:
client = _context2.sent;
results = new Promise(function (resolve, reject) {
client.putObject(s3params, function (err, data) {
if (err) {
resolve({
err: err
});
}
resolve(_objectSpread({}, data, {
link: link
}));
});
});
return _context2.abrupt("return", results);
case 18:
_context2.prev = 18;
_context2.t0 = _context2["catch"](10);
throw new Meteor.Error(_context2.t0.statusCode, _context2.t0.message);
case 21:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[10, 18]]);
}));
return function interfaceMediaCreateDirectory(_x2) {
return _interfaceMediaCreateDirectory.apply(this, arguments);
};
}(),
'interface.media.delete.object': function () {
var _interfaceMediaDeleteObject = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee3(_ref3) {
var file, config, _config$roles3, roles, _config$media_roles3, media_roles, isAuthorized, interfaceSettings, AWSBucket, AWSRegion, s3params, link, client, results;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
file = _ref3.file;
config = _configuration.default.get(); // Extract datas from config
_config$roles3 = config.roles, roles = _config$roles3 === void 0 ? [] : _config$roles3, _config$media_roles3 = config.media_roles, media_roles = _config$media_roles3 === void 0 ? [] : _config$media_roles3;
isAuthorized = Roles.userIsInRole(this.userId, media_roles);
if (isAuthorized) {
_context3.next = 6;
break;
}
throw new Meteor.Error(500, "You are not authorized to do this action.");
case 6:
interfaceSettings = _core.InterfaceCollections.settings.findOne();
AWSBucket = interfaceSettings.AWSBucket, AWSRegion = interfaceSettings.AWSRegion;
s3params = {
Bucket: AWSBucket,
Key: "".concat(file)
};
link = "https://s3-".concat(AWSRegion, ".amazonaws.com/").concat(AWSBucket, "/");
_context3.prev = 10;
_context3.next = 13;
return (0, _S3_config.S3_Client)();
case 13:
client = _context3.sent;
results = new Promise(function (resolve, reject) {
client.deleteObject(s3params, function (err, data) {
if (err) {
resolve({
err: err
});
}
resolve(_objectSpread({}, data, {
link: link
}));
});
});
return _context3.abrupt("return", results);
case 18:
_context3.prev = 18;
_context3.t0 = _context3["catch"](10);
throw new Meteor.Error(_context3.t0.statusCode, _context3.t0.message);
case 21:
case "end":
return _context3.stop();
}
}
}, _callee3, this, [[10, 18]]);
}));
return function interfaceMediaDeleteObject(_x3) {
return _interfaceMediaDeleteObject.apply(this, arguments);
};
}(),
'interface.media.upload.object': function () {
var _interfaceMediaUploadObject = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee4(_ref4) {
var file, path, mimeType, name, config, _config$roles4, roles, _config$media_roles4, media_roles, isAuthorized, bufferImage, interfaceSettings, AWSBucket, AWSRegion, s3params, link, client, results;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
file = _ref4.file, path = _ref4.path, mimeType = _ref4.mimeType, name = _ref4.name;
config = _configuration.default.get(); // Extract datas from config
_config$roles4 = config.roles, roles = _config$roles4 === void 0 ? [] : _config$roles4, _config$media_roles4 = config.media_roles, media_roles = _config$media_roles4 === void 0 ? [] : _config$media_roles4;
isAuthorized = Roles.userIsInRole(this.userId, media_roles);
if (isAuthorized) {
_context4.next = 6;
break;
}
throw new Meteor.Error(500, "You are not authorized to do this action.");
case 6:
bufferImage = Buffer.from(file, 'base64');
interfaceSettings = _core.InterfaceCollections.settings.findOne();
AWSBucket = interfaceSettings.AWSBucket, AWSRegion = interfaceSettings.AWSRegion;
s3params = {
Body: bufferImage,
Bucket: AWSBucket,
ContentEncoding: 'base64',
ContentType: mimeType,
ACL: 'public-read',
Key: "".concat(path ? path + name : name)
};
link = "https://s3-".concat(AWSRegion, ".amazonaws.com/").concat(AWSBucket, "/");
_context4.prev = 11;
_context4.next = 14;
return (0, _S3_config.S3_Client)();
case 14:
client = _context4.sent;
results = new Promise(function (resolve, reject) {
client.putObject(s3params, function (err, data) {
if (err) {
resolve({
err: err
});
}
resolve(_objectSpread({}, data, {
link: link
}));
});
});
return _context4.abrupt("return", results);
case 19:
_context4.prev = 19;
_context4.t0 = _context4["catch"](11);
throw new Meteor.Error(_context4.t0.statusCode, _context4.t0.message);
case 22:
case "end":
return _context4.stop();
}
}
}, _callee4, this, [[11, 19]]);
}));
return function interfaceMediaUploadObject(_x4) {
return _interfaceMediaUploadObject.apply(this, arguments);
};
}()
});