|
| 1 | + |
| 2 | +import ClassesRouter from './ClassesRouter'; |
| 3 | +import PromiseRouter from '../PromiseRouter'; |
| 4 | +import rest from '../rest'; |
| 5 | +import Auth from '../Auth'; |
| 6 | + |
| 7 | +export class SessionsRouter extends ClassesRouter { |
| 8 | + handleFind(req) { |
| 9 | + req.params.className = '_Session'; |
| 10 | + return super.handleFind(req); |
| 11 | + } |
| 12 | + |
| 13 | + handleGet(req) { |
| 14 | + req.params.className = '_Session'; |
| 15 | + return super.handleGet(req); |
| 16 | + } |
| 17 | + |
| 18 | + handleCreate(req) { |
| 19 | + req.params.className = '_Session'; |
| 20 | + return super.handleCreate(req); |
| 21 | + } |
| 22 | + |
| 23 | + handleUpdate(req) { |
| 24 | + req.params.className = '_Session'; |
| 25 | + return super.handleUpdate(req); |
| 26 | + } |
| 27 | + |
| 28 | + handleDelete(req) { |
| 29 | + req.params.className = '_Session'; |
| 30 | + return super.handleDelete(req); |
| 31 | + } |
| 32 | + |
| 33 | + handleMe(req) { |
| 34 | + // TODO: Verify correct behavior |
| 35 | + if (!req.info || !req.info.sessionToken) { |
| 36 | + throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, |
| 37 | + 'Session token required.'); |
| 38 | + } |
| 39 | + return rest.find(req.config, Auth.master(req.config), '_Session', { _session_token: req.info.sessionToken }) |
| 40 | + .then((response) => { |
| 41 | + if (!response.results || response.results.length == 0) { |
| 42 | + throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, |
| 43 | + 'Session token not found.'); |
| 44 | + } |
| 45 | + return { |
| 46 | + response: response.results[0] |
| 47 | + }; |
| 48 | + }); |
| 49 | + } |
| 50 | + |
| 51 | + getExpressRouter() { |
| 52 | + let router = new PromiseRouter(); |
| 53 | + router.route('GET','/sessions/me', (req) => { return this.handleMe(req); }); |
| 54 | + router.route('GET', '/sessions', (req) => { return this.handleFind(req); }); |
| 55 | + router.route('GET', '/sessions/:objectId', (req) => { return this.handleGet(req); }); |
| 56 | + router.route('POST', '/sessions', (req) => { return this.handleCreate(req); }); |
| 57 | + router.route('PUT', '/sessions/:objectId', (req) => { return this.handleUpdate(req); }); |
| 58 | + router.route('DELETE', '/sessions/:objectId', (req) => { return this.handleDelete(req); }); |
| 59 | + return router; |
| 60 | + } |
| 61 | +} |
| 62 | + |
| 63 | +export default SessionsRouter; |
0 commit comments