@@ -2,28 +2,11 @@ const Config = require('./Config');
2
2
const Auth = require ( './Auth' ) ;
3
3
const RESTController = require ( 'parse/lib/node/RESTController' ) ;
4
4
const URL = require ( 'url' ) ;
5
+ import { logger } from './logger' ;
5
6
import {
6
7
logRequest ,
7
8
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' ;
27
10
28
11
export function DirectRESTController ( applicationId , router ) {
29
12
function handleRequest ( method , path , data = { } , options = { } ) {
@@ -86,11 +69,12 @@ export function DirectRESTController(applicationId, router) {
86
69
if ( method === 'GET' ) {
87
70
query = data ;
88
71
}
89
- let forwardResponse = false ;
90
- logRequest ( config . serverURL + path , method , data , { } ) ;
72
+
73
+ logRequest ( "internal" + path , method , data , { } ) ;
74
+
91
75
return new Parse . Promise ( ( resolve , reject ) => {
92
76
getAuth ( options , config ) . then ( ( auth ) => {
93
- return routeRESTRequest ( router , method , path , {
77
+ let request = {
94
78
body : data ,
95
79
config,
96
80
auth,
@@ -99,19 +83,22 @@ export function DirectRESTController(applicationId, router) {
99
83
sessionToken : options . sessionToken
100
84
} ,
101
85
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
+ }
105
100
} ) ;
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 ) ;
115
102
} )
116
103
117
104
} ;
0 commit comments