UNPKG

meteor-interface

Version:

Simple Content Management System to generate your administration interface for Meteor and React.

301 lines (253 loc) 12.5 kB
"use strict"; 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); }; }() });