Skip to content

Commit ac348f5

Browse files
authored
Reverts calling next() after handling response (#2634)
* Revert "Makes sure routes don't overlap and yield a header set error" * removes next() calls in PromiseRouter * Reverts calling next() after response * Adds fail calls when next() calls traverse tests
1 parent 7f6fb11 commit ac348f5

File tree

7 files changed

+20
-26
lines changed

7 files changed

+20
-26
lines changed

spec/helper.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ let openConnections = {};
107107
var app = express();
108108
var api = new ParseServer(defaultConfiguration);
109109
app.use('/1', api);
110+
app.use('/1', (req, res) => {
111+
fail('should not call next');
112+
});
110113
var server = app.listen(port);
111114
server.on('connection', connection => {
112115
let key = `${connection.remoteAddress}:${connection.remotePort}`;
@@ -126,7 +129,9 @@ const reconfigureServer = changedConfiguration => {
126129
api = new ParseServer(newConfiguration);
127130
api.use(require('./testing-routes').router);
128131
app.use('/1', api);
129-
132+
app.use('/1', (req, res) => {
133+
fail('should not call next');
134+
});
130135
server = app.listen(port);
131136
server.on('connection', connection => {
132137
let key = `${connection.remoteAddress}:${connection.remotePort}`;

src/Controllers/AnalyticsController.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import AdaptableController from './AdaptableController';
22
import { AnalyticsAdapter } from '../Adapters/Analytics/AnalyticsAdapter';
33

4-
const AppOpenedEventName = 'AppOpened';
5-
64
export class AnalyticsController extends AdaptableController {
75
appOpened(req) {
86
return Promise.resolve().then(() => {
@@ -15,12 +13,8 @@ export class AnalyticsController extends AdaptableController {
1513
}
1614

1715
trackEvent(req) {
18-
const eventName = req.params.eventName;
19-
if (eventName === AppOpenedEventName) {
20-
return this.appOpened(req);
21-
}
2216
return Promise.resolve().then(() => {
23-
return this.adapter.trackEvent(eventName, req.body, req);
17+
return this.adapter.trackEvent(req.params.eventName, req.body, req);
2418
}).then((response) => {
2519
return { response: response || {} };
2620
}).catch((err) => {

src/ParseServer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,9 @@ class ParseServer {
273273
api.use('/', bodyParser.urlencoded({extended: false}), new PublicAPIRouter().expressRouter());
274274

275275
api.use(bodyParser.json({ 'type': '*/*' , limit: maxUploadSize }));
276+
api.use(middlewares.allowCrossDomain);
276277
api.use(middlewares.allowMethodOverride);
278+
api.use(middlewares.handleParseHeaders);
277279

278280
let appRouter = ParseServer.promiseRouter({ appId });
279281
api.use(appRouter.expressRouter());
@@ -322,8 +324,6 @@ class ParseServer {
322324
}, []);
323325

324326
let appRouter = new PromiseRouter(routes, appId);
325-
appRouter.use(middlewares.allowCrossDomain);
326-
appRouter.use(middlewares.handleParseHeaders);
327327

328328
batch.mountOnto(appRouter);
329329
return appRouter;

src/PromiseRouter.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export default class PromiseRouter {
3939
// location: optional. a location header
4040
constructor(routes = [], appId) {
4141
this.routes = routes;
42-
this.middlewares = [];
4342
this.appId = appId;
4443
this.mountRoutes();
4544
}
@@ -55,10 +54,6 @@ export default class PromiseRouter {
5554
}
5655
};
5756

58-
use(middleware) {
59-
this.middlewares.push(middleware);
60-
}
61-
6257
route(method, path, ...handlers) {
6358
switch(method) {
6459
case 'POST':
@@ -117,8 +112,7 @@ export default class PromiseRouter {
117112
this.routes.forEach((route) => {
118113
let method = route.method.toLowerCase();
119114
let handler = makeExpressHandler(this.appId, route.handler);
120-
let args = [].concat(route.path, this.middlewares, handler);
121-
expressApp[method].apply(expressApp, args);
115+
expressApp[method].call(expressApp, route.path, handler);
122116
});
123117
return expressApp;
124118
};
@@ -175,7 +169,7 @@ function makeExpressHandler(appId, promiseHandler) {
175169

176170
if (result.text) {
177171
res.send(result.text);
178-
return next();
172+
return;
179173
}
180174

181175
if (result.location) {
@@ -184,7 +178,7 @@ function makeExpressHandler(appId, promiseHandler) {
184178
// as it double encodes %encoded chars in URL
185179
if (!result.response) {
186180
res.send('Found. Redirecting to '+result.location);
187-
return next();
181+
return;
188182
}
189183
}
190184
if (result.headers) {
@@ -193,7 +187,6 @@ function makeExpressHandler(appId, promiseHandler) {
193187
})
194188
}
195189
res.json(result.response);
196-
next();
197190
}, (e) => {
198191
log.error(`Error generating response. ${inspect(e)}`, {error: e});
199192
next(e);

src/Routers/AnalyticsRouter.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
// AnalyticsRouter.js
22
import PromiseRouter from '../PromiseRouter';
33

4+
function appOpened(req) {
5+
const analyticsController = req.config.analyticsController;
6+
return analyticsController.appOpened(req);
7+
}
8+
49
function trackEvent(req) {
510
const analyticsController = req.config.analyticsController;
611
return analyticsController.trackEvent(req);
@@ -9,6 +14,7 @@ function trackEvent(req) {
914

1015
export class AnalyticsRouter extends PromiseRouter {
1116
mountRoutes() {
17+
this.route('POST','/events/AppOpened', appOpened);
1218
this.route('POST','/events/:eventName', trackEvent);
1319
}
1420
}

src/Routers/SessionsRouter.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ export class SessionsRouter extends ClassesRouter {
1313
}
1414

1515
handleGet(req) {
16-
if (req.params.objectId === 'me') {
17-
return this.handleMe(req);
18-
}
1916
req.params.className = '_Session';
2017
return super.handleGet(req);
2118
}
@@ -86,6 +83,7 @@ export class SessionsRouter extends ClassesRouter {
8683
}
8784

8885
mountRoutes() {
86+
this.route('GET','/sessions/me', req => { return this.handleMe(req); });
8987
this.route('GET', '/sessions', req => { return this.handleFind(req); });
9088
this.route('GET', '/sessions/:objectId', req => { return this.handleGet(req); });
9189
this.route('POST', '/sessions', req => { return this.handleCreate(req); });

src/Routers/UsersRouter.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ export class UsersRouter extends ClassesRouter {
1919
}
2020

2121
handleGet(req) {
22-
if (req.params.objectId === 'me') {
23-
return this.handleMe(req);
24-
}
2522
req.params.className = '_User';
2623
return super.handleGet(req);
2724
}
@@ -214,6 +211,7 @@ export class UsersRouter extends ClassesRouter {
214211
mountRoutes() {
215212
this.route('GET', '/users', req => { return this.handleFind(req); });
216213
this.route('POST', '/users', req => { return this.handleCreate(req); });
214+
this.route('GET', '/users/me', req => { return this.handleMe(req); });
217215
this.route('GET', '/users/:objectId', req => { return this.handleGet(req); });
218216
this.route('PUT', '/users/:objectId', req => { return this.handleUpdate(req); });
219217
this.route('DELETE', '/users/:objectId', req => { return this.handleDelete(req); });

0 commit comments

Comments
 (0)