@@ -2,28 +2,11 @@ const Config = require('./Config');
22const Auth = require ( './Auth' ) ;
33const RESTController = require ( 'parse/lib/node/RESTController' ) ;
44const URL = require ( 'url' ) ;
5+ import { logger } from './logger' ;
56import {
67 logRequest ,
78 logResponse
8- } from './SensitiveLogger' ;
9-
10- export function routeRESTRequest ( router , method , path , request , fallback ) {
11-
12- // Use the router to figure out what handler to use
13- var match = router . match ( method , path ) ;
14- if ( ! match ) {
15- if ( fallback ) {
16- return fallback ( ) ;
17- }
18- throw new Parse . Error (
19- Parse . Error . INVALID_JSON ,
20- 'cannot route ' + method + ' ' + path ) ;
21- }
22- request . params = match . params ;
23- return new Promise ( ( resolve , reject ) => {
24- match . handler ( request ) . then ( resolve , reject ) ;
25- } ) ;
26- }
9+ } from './sensitiveLogger' ;
2710
2811export function DirectRESTController ( applicationId , router ) {
2912 function handleRequest ( method , path , data = { } , options = { } ) {
@@ -86,11 +69,12 @@ export function DirectRESTController(applicationId, router) {
8669 if ( method === 'GET' ) {
8770 query = data ;
8871 }
89- let forwardResponse = false ;
90- logRequest ( config . serverURL + path , method , data , { } ) ;
72+
73+ logRequest ( "internal" + path , method , data , { } ) ;
74+
9175 return new Parse . Promise ( ( resolve , reject ) => {
9276 getAuth ( options , config ) . then ( ( auth ) => {
93- return routeRESTRequest ( router , method , path , {
77+ let request = {
9478 body : data ,
9579 config,
9680 auth,
@@ -99,19 +83,22 @@ export function DirectRESTController(applicationId, router) {
9983 sessionToken : options . sessionToken
10084 } ,
10185 query
102- } , function ( ) {
103- forwardResponse = true ;
104- return RESTController . request . apply ( null , args ) ;
86+ } ;
87+ return Promise . resolve ( ) . then ( ( ) => {
88+ return router . tryRouteRequest ( method , path , request ) ;
89+ } ) . then ( ( response ) => {
90+ logResponse ( "internal" + path , method , response . response ) ;
91+ resolve ( response . response , response . status , response ) ;
92+ } , ( err ) => {
93+ if ( err instanceof Parse . Error &&
94+ err . code == Parse . Error . INVALID_JSON &&
95+ err . message == `cannot route ${ method } ${ path } ` ) {
96+ RESTController . request . apply ( null , args ) . then ( resolve , reject ) ;
97+ } else {
98+ reject ( err ) ;
99+ }
105100 } ) ;
106- } ) . then ( ( response ) => {
107- if ( forwardResponse ) {
108- return resolve ( response ) ;
109- }
110- logResponse ( config . serverURL + path , method , response . response , { } ) ;
111- return resolve ( response . response , response . status , response ) ;
112- } , ( error ) => {
113- return reject ( error ) ;
114- } )
101+ } , reject ) ;
115102 } )
116103
117104 } ;
0 commit comments