Skip to content

Commit 9ced7aa

Browse files
committed
Refactor and deduplicate logic in SessionsRouter.
1 parent c96a646 commit 9ced7aa

File tree

3 files changed

+65
-99
lines changed

3 files changed

+65
-99
lines changed

src/Routers/SessionsRouter.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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;

src/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { PushController } from './Controllers/PushController';
2121
import { ClassesRouter } from './Routers/ClassesRouter';
2222
import { InstallationsRouter } from './Routers/InstallationsRouter';
2323
import { UsersRouter } from './Routers/UsersRouter';
24+
import { SessionsRouter } from './Routers/SessionsRouter';
2425

2526
// Mutate the Parse object to add the Cloud Code handlers
2627
addParseCloud();
@@ -131,7 +132,7 @@ function ParseServer(args) {
131132
let routers = [
132133
new ClassesRouter().getExpressRouter(),
133134
new UsersRouter().getExpressRouter(),
134-
require('./sessions'),
135+
new SessionsRouter().getExpressRouter(),
135136
require('./roles'),
136137
require('./analytics'),
137138
new InstallationsRouter().getExpressRouter(),

src/sessions.js

Lines changed: 0 additions & 98 deletions
This file was deleted.

0 commit comments

Comments
 (0)