@@ -2,95 +2,97 @@ 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
+ const Parse = require ( 'parse/node' ) ;
6
6
7
- export function ParseServerRESTController ( applicationId , router ) {
7
+ function getSessionToken ( options ) {
8
+ if ( options && typeof options . sessionToken === 'string' ) {
9
+ return Parse . Promise . as ( options . sessionToken ) ;
10
+ }
11
+ return Parse . Promise . as ( null ) ;
12
+ }
13
+
14
+ function getAuth ( options , config ) {
15
+ if ( options . useMasterKey ) {
16
+ return Parse . Promise . as ( new Auth . Auth ( { config, isMaster : true } ) ) ;
17
+ }
18
+ return getSessionToken ( options ) . then ( ( sessionToken ) => {
19
+ if ( sessionToken ) {
20
+ options . sessionToken = sessionToken ;
21
+ return Auth . getAuthForSessionToken ( {
22
+ config,
23
+ sessionToken : sessionToken
24
+ } ) ;
25
+ } else {
26
+ return Parse . Promise . as ( new Auth . Auth ( { config } ) ) ;
27
+ }
28
+ } )
29
+ }
30
+
31
+ function ParseServerRESTController ( applicationId , router ) {
8
32
function handleRequest ( method , path , data = { } , options = { } ) {
9
- let args = arguments ;
10
- if ( path == 'batch' ) {
11
- let promises = data . requests . map ( ( request ) => {
12
- return handleRequest ( request . method , request . path , request . body , options ) . then ( ( response ) => {
13
- return Parse . Promise . as ( { success : response } ) ;
14
- } , ( error ) => {
15
- return Parse . Promise . as ( { error : { code : error . code , error : error . message } } ) ;
16
- } ) ;
17
- } ) ;
18
- return Parse . Promise . all ( promises ) ;
19
- }
33
+ // Store the arguments, for later use if internal fails
34
+ let args = arguments ;
35
+
36
+ let config = new Config ( applicationId ) ;
37
+ let serverURL = URL . parse ( config . serverURL ) ;
38
+ if ( path . indexOf ( serverURL . path ) === 0 ) {
39
+ path = path . slice ( serverURL . path . length , path . length ) ;
40
+ }
20
41
21
- let config = new Config ( applicationId ) ;
22
- let serverURL = URL . parse ( config . serverURL ) ;
23
- if ( path . indexOf ( serverURL . path ) === 0 ) {
24
- path = path . slice ( serverURL . path . length , path . length ) ;
25
- }
42
+ if ( path [ 0 ] !== "/" ) {
43
+ path = "/" + path ;
44
+ }
26
45
27
- if ( path [ 0 ] !== "/" ) {
28
- path = "/" + path ;
29
- }
46
+ if ( path === '/batch' ) {
47
+ let promises = data . requests . map ( ( request ) => {
48
+ return handleRequest ( request . method , request . path , request . body , options ) . then ( ( response ) => {
49
+ return Parse . Promise . as ( { success : response } ) ;
50
+ } , ( error ) => {
51
+ return Parse . Promise . as ( { error : { code : error . code , error : error . message } } ) ;
52
+ } ) ;
53
+ } ) ;
54
+ return Parse . Promise . all ( promises ) ;
55
+ }
30
56
31
- function getSessionToken ( options ) {
32
- if ( options && typeof options . sessionToken === 'string' ) {
33
- return Parse . Promise . as ( options . sessionToken ) ;
34
- }
35
- return Parse . Promise . as ( null ) ;
36
- }
57
+ let query ;
58
+ if ( method === 'GET' ) {
59
+ query = data ;
60
+ }
37
61
38
- function getAuth ( options , config ) {
39
- if ( options . useMasterKey ) {
40
- return Parse . Promise . as ( new Auth . Auth ( { config, isMaster : true } ) ) ;
41
- }
42
- return getSessionToken ( options ) . then ( ( sessionToken ) => {
43
- if ( sessionToken ) {
44
- options . sessionToken = sessionToken ;
45
- return Auth . getAuthForSessionToken ( {
46
- config,
47
- sessionToken : sessionToken
48
- } ) ;
62
+ return new Parse . Promise ( ( resolve , reject ) => {
63
+ getAuth ( options , config ) . then ( ( auth ) => {
64
+ let request = {
65
+ body : data ,
66
+ config,
67
+ auth,
68
+ info : {
69
+ applicationId : applicationId ,
70
+ sessionToken : options . sessionToken
71
+ } ,
72
+ query
73
+ } ;
74
+ return Promise . resolve ( ) . then ( ( ) => {
75
+ return router . tryRouteRequest ( method , path , request ) ;
76
+ } ) . then ( ( response ) => {
77
+ resolve ( response . response , response . status , response ) ;
78
+ } , ( err ) => {
79
+ if ( err instanceof Parse . Error &&
80
+ err . code == Parse . Error . INVALID_JSON &&
81
+ err . message == `cannot route ${ method } ${ path } ` ) {
82
+ RESTController . request . apply ( null , args ) . then ( resolve , reject ) ;
49
83
} else {
50
- return Parse . Promise . as ( new Auth . Auth ( { config } ) ) ;
84
+ reject ( err ) ;
51
85
}
52
- } )
53
- }
54
-
55
- let query ;
56
- if ( method === 'GET' ) {
57
- query = data ;
58
- }
59
-
60
- return new Parse . Promise ( ( resolve , reject ) => {
61
- getAuth ( options , config ) . then ( ( auth ) => {
62
- let request = {
63
- body : data ,
64
- config,
65
- auth,
66
- info : {
67
- applicationId : applicationId ,
68
- sessionToken : options . sessionToken
69
- } ,
70
- query
71
- } ;
72
- return Promise . resolve ( ) . then ( ( ) => {
73
- return router . tryRouteRequest ( method , path , request ) ;
74
- } ) . then ( ( response ) => {
75
- resolve ( response . response , response . status , response ) ;
76
- } , ( err ) => {
77
- if ( err instanceof Parse . Error &&
78
- err . code == Parse . Error . INVALID_JSON &&
79
- err . message == `cannot route ${ method } ${ path } ` ) {
80
- RESTController . request . apply ( null , args ) . then ( resolve , reject ) ;
81
- } else {
82
- reject ( err ) ;
83
- }
84
- } ) ;
85
- } , reject ) ;
86
- } ) ;
87
-
88
- } ;
86
+ } ) ;
87
+ } , reject ) ;
88
+ } ) ;
89
+ } ;
89
90
90
91
return {
91
92
request : handleRequest ,
92
- ajax : function ( ) {
93
- return RESTController . ajax . apply ( null , arguments ) ;
94
- }
93
+ ajax : RESTController . ajax
95
94
} ;
96
- } ;
95
+ } ;
96
+
97
+ export default ParseServerRESTController ;
98
+ export { ParseServerRESTController } ;
0 commit comments