1
+ /* eslint-disable no-useless-call */
2
+
1
3
const fastProxy = require ( 'fast-proxy' )
2
4
const restana = require ( 'restana' )
3
5
const pump = require ( 'pump' )
4
6
const toArray = require ( 'stream-to-array' )
5
7
const defaultProxyHandler = ( req , res , url , proxy , proxyOpts ) => proxy ( req , res , url , proxyOpts )
6
8
const DEFAULT_METHODS = require ( 'restana/libs/methods' )
9
+ const send = require ( '@polka/send-type' )
7
10
8
11
const gateway = ( opts ) => {
9
12
opts = Object . assign ( {
10
13
middlewares : [ ] ,
11
14
pathRegex : '/*'
12
15
} , opts )
13
16
14
- const server = ( opts . restana instanceof Function ) ? opts . restana ( ) : restana ( opts . restana || {
17
+ const server = opts . server || ( ( opts . restana instanceof Function ) ? opts . restana ( ) : restana ( opts . restana || {
15
18
disableResponseEvent : true
16
- } )
19
+ } ) )
17
20
18
21
// registering global middlewares
19
22
opts . middlewares . forEach ( middleware => {
@@ -26,7 +29,7 @@ const gateway = (opts) => {
26
29
docs : route . docs
27
30
} ) )
28
31
server . get ( '/services.json' , ( req , res ) => {
29
- res . send ( services )
32
+ send ( res , 200 , services )
30
33
} )
31
34
32
35
// processing routes
@@ -40,6 +43,9 @@ const gateway = (opts) => {
40
43
route . hooks . onRequest = route . hooks . onRequest || onRequestNoOp
41
44
route . hooks . onResponse = route . hooks . onResponse || onResponse
42
45
46
+ // populating route middlewares
47
+ route . middlewares = route . middlewares || [ ]
48
+
43
49
// populating pathRegex if missing
44
50
route . pathRegex = undefined === route . pathRegex ? opts . pathRegex : String ( route . pathRegex )
45
51
@@ -62,14 +68,14 @@ const gateway = (opts) => {
62
68
method = method . toLowerCase ( )
63
69
64
70
if ( server [ method ] ) {
65
- server [ method ] (
66
- // path
71
+ server [ method ] . apply ( server , [
72
+ // path
67
73
route . prefix + route . pathRegex ,
68
- // route handler
69
- handler ( route , proxy , proxyHandler ) ,
70
74
// route middlewares
71
- route . middlewares
72
- )
75
+ ...route . middlewares ,
76
+ // route handler
77
+ handler ( route , proxy , proxyHandler )
78
+ ] )
73
79
}
74
80
} )
75
81
} )
@@ -100,7 +106,8 @@ const onResponse = async (req, res, stream) => {
100
106
res . statusCode = stream . statusCode
101
107
res . end ( resBuffer )
102
108
} catch ( err ) {
103
- res . send ( err )
109
+ res . statusCode = 500
110
+ res . end ( err . message )
104
111
}
105
112
} else {
106
113
res . statusCode = stream . statusCode
0 commit comments