FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
parse-server/src/batch.js at master · PocketPro/parse-server · GitHub
PocketPro
/
parse-server
Public
forked from
parse-community/parse-server
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
parse-server
/
src
/
batch.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
72 lines (62 loc) · 2.23 KB
Breadcrumbs
parse-server
/
src
/
batch.js
Copy path
File metadata and controls
72 lines (62 loc) · 2.23 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
var
Parse
=
require
(
'parse/node'
)
.
Parse
;
// These methods handle batch requests.
var
batchPath
=
'/batch'
;
// Mounts a batch-handler onto a PromiseRouter.
function
mountOnto
(
router
)
{
router
.
route
(
'POST'
,
batchPath
,
(
req
)
=>
{
return
handleBatch
(
router
,
req
)
;
}
)
;
}
// Returns a promise for a {response} object.
// TODO: pass along auth correctly
function
handleBatch
(
router
,
req
)
{
if
(
!
req
.
body
.
requests
instanceof
Array
)
{
throw
new
Parse
.
Error
(
Parse
.
Error
.
INVALID_JSON
,
'requests must be an array'
)
;
}
// The batch paths are all from the root of our domain.
// That means they include the API prefix, that the API is mounted
// to. However, our promise router does not route the api prefix. So
// we need to figure out the API prefix, so that we can strip it
// from all the subrequests.
if
(
!
req
.
originalUrl
.
endsWith
(
batchPath
)
)
{
throw
'internal routing problem - expected url to end with batch'
;
}
var
apiPrefixLength
=
req
.
originalUrl
.
length
-
batchPath
.
length
;
var
apiPrefix
=
req
.
originalUrl
.
slice
(
0
,
apiPrefixLength
)
;
var
promises
=
[
]
;
for
(
var
restRequest
of
req
.
body
.
requests
)
{
// The routablePath is the path minus the api prefix
if
(
restRequest
.
path
.
slice
(
0
,
apiPrefixLength
)
!=
apiPrefix
)
{
throw
new
Parse
.
Error
(
Parse
.
Error
.
INVALID_JSON
,
'cannot route batch path '
+
restRequest
.
path
)
;
}
var
routablePath
=
restRequest
.
path
.
slice
(
apiPrefixLength
)
;
// Use the router to figure out what handler to use
var
match
=
router
.
match
(
restRequest
.
method
,
routablePath
)
;
if
(
!
match
)
{
throw
new
Parse
.
Error
(
Parse
.
Error
.
INVALID_JSON
,
'cannot route '
+
restRequest
.
method
+
' '
+
routablePath
)
;
}
// Construct a request that we can send to a handler
var
request
=
{
body
:
restRequest
.
body
,
params
:
match
.
params
,
config
:
req
.
config
,
auth
:
req
.
auth
}
;
promises
.
push
(
match
.
handler
(
request
)
.
then
(
(
response
)
=>
{
return
{
success
:
response
.
response
}
;
}
,
(
error
)
=>
{
return
{
error
:
{
code
:
error
.
code
,
error
:
error
.
message
}
}
;
}
)
)
;
}
return
Promise
.
all
(
promises
)
.
then
(
(
results
)
=>
{
return
{
response
:
results
}
;
}
)
;
}
module
.
exports
=
{
mountOnto
:
mountOnto
}
;
Back
|
FazBrowse Home
|
New Git URL