123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.HooksRouter = void 0;
- var _node = require("parse/node");
- var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
- var middleware = _interopRequireWildcard(require("../middlewares"));
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
- class HooksRouter extends _PromiseRouter.default {
- createHook(aHook, config) {
- return config.hooksController.createHook(aHook).then(hook => ({
- response: hook
- }));
- }
- updateHook(aHook, config) {
- return config.hooksController.updateHook(aHook).then(hook => ({
- response: hook
- }));
- }
- handlePost(req) {
- return this.createHook(req.body, req.config);
- }
- handleGetFunctions(req) {
- var hooksController = req.config.hooksController;
- if (req.params.functionName) {
- return hooksController.getFunction(req.params.functionName).then(foundFunction => {
- if (!foundFunction) {
- throw new _node.Parse.Error(143, `no function named: ${req.params.functionName} is defined`);
- }
- return Promise.resolve({
- response: foundFunction
- });
- });
- }
- return hooksController.getFunctions().then(functions => {
- return {
- response: functions || []
- };
- }, err => {
- throw err;
- });
- }
- handleGetTriggers(req) {
- var hooksController = req.config.hooksController;
- if (req.params.className && req.params.triggerName) {
- return hooksController.getTrigger(req.params.className, req.params.triggerName).then(foundTrigger => {
- if (!foundTrigger) {
- throw new _node.Parse.Error(143, `class ${req.params.className} does not exist`);
- }
- return Promise.resolve({
- response: foundTrigger
- });
- });
- }
- return hooksController.getTriggers().then(triggers => ({
- response: triggers || []
- }));
- }
- handleDelete(req) {
- var hooksController = req.config.hooksController;
- if (req.params.functionName) {
- return hooksController.deleteFunction(req.params.functionName).then(() => ({
- response: {}
- }));
- } else if (req.params.className && req.params.triggerName) {
- return hooksController.deleteTrigger(req.params.className, req.params.triggerName).then(() => ({
- response: {}
- }));
- }
- return Promise.resolve({
- response: {}
- });
- }
- handleUpdate(req) {
- var hook;
- if (req.params.functionName && req.body.url) {
- hook = {};
- hook.functionName = req.params.functionName;
- hook.url = req.body.url;
- } else if (req.params.className && req.params.triggerName && req.body.url) {
- hook = {};
- hook.className = req.params.className;
- hook.triggerName = req.params.triggerName;
- hook.url = req.body.url;
- } else {
- throw new _node.Parse.Error(143, 'invalid hook declaration');
- }
- return this.updateHook(hook, req.config);
- }
- handlePut(req) {
- var body = req.body;
- if (body.__op == 'Delete') {
- return this.handleDelete(req);
- } else {
- return this.handleUpdate(req);
- }
- }
- mountRoutes() {
- this.route('GET', '/hooks/functions', middleware.promiseEnforceMasterKeyAccess, this.handleGetFunctions.bind(this));
- this.route('GET', '/hooks/triggers', middleware.promiseEnforceMasterKeyAccess, this.handleGetTriggers.bind(this));
- this.route('GET', '/hooks/functions/:functionName', middleware.promiseEnforceMasterKeyAccess, this.handleGetFunctions.bind(this));
- this.route('GET', '/hooks/triggers/:className/:triggerName', middleware.promiseEnforceMasterKeyAccess, this.handleGetTriggers.bind(this));
- this.route('POST', '/hooks/functions', middleware.promiseEnforceMasterKeyAccess, this.handlePost.bind(this));
- this.route('POST', '/hooks/triggers', middleware.promiseEnforceMasterKeyAccess, this.handlePost.bind(this));
- this.route('PUT', '/hooks/functions/:functionName', middleware.promiseEnforceMasterKeyAccess, this.handlePut.bind(this));
- this.route('PUT', '/hooks/triggers/:className/:triggerName', middleware.promiseEnforceMasterKeyAccess, this.handlePut.bind(this));
- }
- }
- exports.HooksRouter = HooksRouter;
- var _default = exports.default = HooksRouter;
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUGFyc2UiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0RnVuY3Rpb25zIiwiZnVuY3Rpb25zIiwiZXJyIiwiaGFuZGxlR2V0VHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJ0cmlnZ2VyTmFtZSIsImdldFRyaWdnZXIiLCJmb3VuZFRyaWdnZXIiLCJnZXRUcmlnZ2VycyIsInRyaWdnZXJzIiwiaGFuZGxlRGVsZXRlIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVUcmlnZ2VyIiwiaGFuZGxlVXBkYXRlIiwidXJsIiwiaGFuZGxlUHV0IiwiX19vcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImJpbmQiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Ib29rc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEhvb2tzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGNyZWF0ZUhvb2soYUhvb2ssIGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcuaG9va3NDb250cm9sbGVyLmNyZWF0ZUhvb2soYUhvb2spLnRoZW4oaG9vayA9PiAoeyByZXNwb25zZTogaG9vayB9KSk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci51cGRhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgaGFuZGxlUG9zdChyZXEpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keS51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgICBob29rLnVybCA9IHJlcS5ib2R5LnVybDtcbiAgICB9IGVsc2UgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUgJiYgcmVxLmJvZHkudXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmNsYXNzTmFtZSA9IHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuICAgICAgaG9vay50cmlnZ2VyTmFtZSA9IHJlcS5wYXJhbXMudHJpZ2dlck5hbWU7XG4gICAgICBob29rLnVybCA9IHJlcS5ib2R5LnVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgJ2ludmFsaWQgaG9vayBkZWNsYXJhdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVIb29rKGhvb2ssIHJlcS5jb25maWcpO1xuICB9XG5cbiAgaGFuZGxlUHV0KHJlcSkge1xuICAgIHZhciBib2R5ID0gcmVxLmJvZHk7XG4gICAgaWYgKGJvZHkuX19vcCA9PSAnRGVsZXRlJykge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVVwZGF0ZShyZXEpO1xuICAgIH1cbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldEZ1bmN0aW9ucy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zLzpmdW5jdGlvbk5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0RnVuY3Rpb25zLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMvOmNsYXNzTmFtZS86dHJpZ2dlck5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0VHJpZ2dlcnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVBvc3QuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BVVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVB1dC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BVVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzLzpjbGFzc05hbWUvOnRyaWdnZXJOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVB1dC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIb29rc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQTZDLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFB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
|