From 8e034dd9b0e868c7efea05786737705c78769b22 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Tue, 1 Mar 2016 18:19:37 -0500 Subject: [PATCH 1/2] adds scriptlog endpoint --- src/Routers/LogsRouter.js | 44 +++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/src/Routers/LogsRouter.js b/src/Routers/LogsRouter.js index 27a9bd487c..ed622a83ca 100644 --- a/src/Routers/LogsRouter.js +++ b/src/Routers/LogsRouter.js @@ -5,7 +5,12 @@ import * as middleware from "../middlewares"; export class LogsRouter extends PromiseRouter { mountRoutes() { - this.route('GET','/logs', middleware.promiseEnforceMasterKeyAccess, req => { return this.handleGET(req); }); + this.route('GET','/logs', (req) => { + return this.handleGET(req); + }); + this.route('GET','/scriptlog', (req) => { + return this.handleScriptLog(req); + }); } // Returns a promise for a {response} object. @@ -16,16 +21,11 @@ export class LogsRouter extends PromiseRouter { // order (optional) Direction of results returned, either “asc” or “desc”. Defaults to “desc”. // size (optional) Number of rows returned by search. Defaults to 10 handleGET(req) { - if (!req.config || !req.config.loggerController) { - throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED, 'Logger adapter is not available.'); - } - - let from = req.query.from; - let until = req.query.until; - let size = req.query.size; - let order = req.query.order - let level = req.query.level; - + const from = req.query.from; + const until = req.query.until; + const size = req.query.size; + const order = req.query.order + const level = req.query.level; const options = { from, until, @@ -37,6 +37,28 @@ export class LogsRouter extends PromiseRouter { return req.config.loggerController .getLogs(options) .then(result => ({ response: result })); + level, + } + return this.getLogs(req, options); + } + + handleScriptLog(req) { + const size = req.query.n; + const level = req.query.level; + return this.getLogs(req, { size, level }); + } + + getLogs(req, options) { + if (!req.config || !req.config.loggerController) { + throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED, + 'Logger adapter is not availabe'); + } + enforceSecurity(req.auth); + return req.config.loggerController.getLogs(options).then((result) => { + return Promise.resolve({ + response: result + }); + }) } } From 63dc64004d4fa6607dab192db2f33f89e9b1c7a8 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Tue, 1 Mar 2016 22:33:14 -0500 Subject: [PATCH 2/2] Removes /logs endpoint --- spec/LogsRouter.spec.js | 6 +++--- src/Routers/LogsRouter.js | 41 ++++++++++++++------------------------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/spec/LogsRouter.spec.js b/spec/LogsRouter.spec.js index 6a363a7daa..e8907a39b6 100644 --- a/spec/LogsRouter.spec.js +++ b/spec/LogsRouter.spec.js @@ -23,7 +23,7 @@ describe('LogsRouter', () => { var router = new LogsRouter(); expect(() => { - router.handleGET(request); + router.validateRequest(request); }).not.toThrow(); done(); }); @@ -43,14 +43,14 @@ describe('LogsRouter', () => { var router = new LogsRouter(); expect(() => { - router.handleGET(request); + router.validateRequest(request); }).toThrow(); done(); }); it('can check invalid master key of request', done => { request.get({ - url: 'http://localhost:8378/1/logs', + url: 'http://localhost:8378/1/scriptlog', json: true, headers: { 'X-Parse-Application-Id': 'test', diff --git a/src/Routers/LogsRouter.js b/src/Routers/LogsRouter.js index ed622a83ca..fbc8ec99d4 100644 --- a/src/Routers/LogsRouter.js +++ b/src/Routers/LogsRouter.js @@ -5,12 +5,16 @@ import * as middleware from "../middlewares"; export class LogsRouter extends PromiseRouter { mountRoutes() { - this.route('GET','/logs', (req) => { + this.route('GET','/scriptlog', middleware.promiseEnforceMasterKeyAccess, this.validateRequest, (req) => { return this.handleGET(req); }); - this.route('GET','/scriptlog', (req) => { - return this.handleScriptLog(req); - }); + } + + validateRequest(req) { + if (!req.config || !req.config.loggerController) { + throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED, + 'Logger adapter is not availabe'); + } } // Returns a promise for a {response} object. @@ -20,10 +24,15 @@ export class LogsRouter extends PromiseRouter { // until (optional) End time for the search. Defaults to current time. // order (optional) Direction of results returned, either “asc” or “desc”. Defaults to “desc”. // size (optional) Number of rows returned by search. Defaults to 10 + // n same as size, overrides size if set handleGET(req) { const from = req.query.from; const until = req.query.until; - const size = req.query.size; + let size = req.query.size; + if (req.query.n) { + size = req.query.n; + } + const order = req.query.order const level = req.query.level; const options = { @@ -33,27 +42,7 @@ export class LogsRouter extends PromiseRouter { order, level }; - - return req.config.loggerController - .getLogs(options) - .then(result => ({ response: result })); - level, - } - return this.getLogs(req, options); - } - - handleScriptLog(req) { - const size = req.query.n; - const level = req.query.level; - return this.getLogs(req, { size, level }); - } - - getLogs(req, options) { - if (!req.config || !req.config.loggerController) { - throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED, - 'Logger adapter is not availabe'); - } - enforceSecurity(req.auth); + return req.config.loggerController.getLogs(options).then((result) => { return Promise.resolve({ response: result