diff --git a/src/Routers/InstallationsRouter.js b/src/Routers/InstallationsRouter.js new file mode 100644 index 00000000..033366b7 --- /dev/null +++ b/src/Routers/InstallationsRouter.js @@ -0,0 +1,64 @@ +// InstallationsRouter.js + +import ClassesRouter from './ClassesRouter'; +import PromiseRouter from '../PromiseRouter'; +import rest from '../rest'; + +export class InstallationsRouter extends ClassesRouter { + handleFind(req) { + var options = {}; + if (req.body.skip) { + options.skip = Number(req.body.skip); + } + if (req.body.limit) { + options.limit = Number(req.body.limit); + } + if (req.body.order) { + options.order = String(req.body.order); + } + if (req.body.count) { + options.count = true; + } + if (req.body.include) { + options.include = String(req.body.include); + } + + return rest.find(req.config, req.auth, + '_Installation', req.body.where, options) + .then((response) => { + return {response: response}; + }); + } + + handleGet(req) { + req.params.className = '_Installation'; + return super.handleGet(req); + } + + handleCreate(req) { + req.params.className = '_Installation'; + return super.handleCreate(req); + } + + handleUpdate(req) { + req.params.className = '_Installation'; + return super.handleUpdate(req); + } + + handleDelete(req) { + req.params.className = '_Installation'; + return super.handleDelete(req); + } + + getExpressRouter() { + var router = new PromiseRouter(); + router.route('GET','/installations', (req) => { return this.handleFind(req); }); + router.route('GET','/installations/:objectId', (req) => { return this.handleGet(req); }); + router.route('POST','/installations', (req) => { return this.handleCreate(req); }); + router.route('PUT','/installations/:objectId', (req) => { return this.handleUpdate(req); }); + router.route('DELETE','/installations/:objectId', (req) => { return this.handleDelete(req); }); + return router; + } +} + +export default InstallationsRouter; diff --git a/src/index.js b/src/index.js index 32ba636b..c2993400 100644 --- a/src/index.js +++ b/src/index.js @@ -19,6 +19,7 @@ import ParsePushAdapter from './Adapters/Push/ParsePushAdapter'; import { PushController } from './Controllers/PushController'; import { ClassesRouter } from './Routers/ClassesRouter'; +import { InstallationsRouter } from './Routers/InstallationsRouter'; // Mutate the Parse object to add the Cloud Code handlers addParseCloud(); @@ -132,7 +133,7 @@ function ParseServer(args) { require('./sessions'), require('./roles'), require('./analytics'), - require('./installations'), + new InstallationsRouter().getExpressRouter(), require('./functions'), require('./schemas'), new PushController(pushAdapter).getExpressRouter() diff --git a/src/installations.js b/src/installations.js deleted file mode 100644 index 517c3b81..00000000 --- a/src/installations.js +++ /dev/null @@ -1,80 +0,0 @@ -// installations.js - -var Parse = require('parse/node').Parse; -var PromiseRouter = require('./PromiseRouter'); -var rest = require('./rest'); - -var router = new PromiseRouter(); - - -// Returns a promise for a {status, response, location} object. -function handleCreate(req) { - return rest.create(req.config, - req.auth, '_Installation', req.body); -} - -// Returns a promise that resolves to a {response} object. -function handleFind(req) { - var options = {}; - if (req.body.skip) { - options.skip = Number(req.body.skip); - } - if (req.body.limit) { - options.limit = Number(req.body.limit); - } - if (req.body.order) { - options.order = String(req.body.order); - } - if (req.body.count) { - options.count = true; - } - if (req.body.include) { - options.include = String(req.body.include); - } - - return rest.find(req.config, req.auth, - '_Installation', req.body.where, options) - .then((response) => { - return {response: response}; - }); -} - -// Returns a promise for a {response} object. -function handleGet(req) { - return rest.find(req.config, req.auth, '_Installation', - {objectId: req.params.objectId}) - .then((response) => { - if (!response.results || response.results.length == 0) { - throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, - 'Object not found.'); - } else { - return {response: response.results[0]}; - } - }); -} - -// Returns a promise for a {response} object. -function handleUpdate(req) { - return rest.update(req.config, req.auth, - '_Installation', req.params.objectId, req.body) - .then((response) => { - return {response: response}; - }); -} - -// Returns a promise for a {response} object. -function handleDelete(req) { - return rest.del(req.config, req.auth, - '_Installation', req.params.objectId) - .then(() => { - return {response: {}}; - }); -} - -router.route('POST','/installations', handleCreate); -router.route('GET','/installations', handleFind); -router.route('GET','/installations/:objectId', handleGet); -router.route('PUT','/installations/:objectId', handleUpdate); -router.route('DELETE','/installations/:objectId', handleDelete); - -module.exports = router; \ No newline at end of file