1. Add no space in paren rule 2. fix spec/eslintrc.json so it allow for inheriting from root rc. Because the spce rc specified reccomended, it "turned off" all of the rule tweaks in the root. This fixes that.
101 lines
3.8 KiB
JavaScript
101 lines
3.8 KiB
JavaScript
import { Parse } from 'parse/node';
|
|
import PromiseRouter from '../PromiseRouter';
|
|
import * as middleware from "../middlewares";
|
|
|
|
export class HooksRouter extends PromiseRouter {
|
|
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 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 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 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));
|
|
}
|
|
}
|
|
|
|
export default HooksRouter;
|