@@ -5,7 +5,7 @@ const restana = require('restana')
5
5
const pump = require ( 'pump' )
6
6
const toArray = require ( 'stream-to-array' )
7
7
const defaultProxyHandler = ( req , res , url , proxy , proxyOpts ) => proxy ( req , res , url , proxyOpts )
8
- const DEFAULT_METHODS = require ( 'restana/libs/methods' )
8
+ const DEFAULT_METHODS = require ( 'restana/libs/methods' ) . filter ( method => method !== 'all' )
9
9
const send = require ( '@polka/send-type' )
10
10
11
11
const gateway = ( opts ) => {
@@ -14,9 +14,7 @@ const gateway = (opts) => {
14
14
pathRegex : '/*'
15
15
} , opts )
16
16
17
- const server = opts . server || ( ( opts . restana instanceof Function ) ? opts . restana ( ) : restana ( opts . restana || {
18
- disableResponseEvent : true
19
- } ) )
17
+ const server = opts . server || restana ( opts . restana )
20
18
21
19
// registering global middlewares
22
20
opts . middlewares . forEach ( middleware => {
@@ -64,36 +62,42 @@ const gateway = (opts) => {
64
62
65
63
// registering route handlers
66
64
const methods = route . methods || DEFAULT_METHODS
65
+
66
+ const args = [
67
+ // path
68
+ route . prefix + route . pathRegex ,
69
+ // route middlewares
70
+ ...route . middlewares ,
71
+ // route handler
72
+ handler ( route , proxy , proxyHandler )
73
+ ]
74
+
67
75
methods . forEach ( method => {
68
76
method = method . toLowerCase ( )
69
-
70
77
if ( server [ method ] ) {
71
- server [ method ] . apply ( server , [
72
- // path
73
- route . prefix + route . pathRegex ,
74
- // route middlewares
75
- ...route . middlewares ,
76
- // route handler
77
- handler ( route , proxy , proxyHandler )
78
- ] )
78
+ server [ method ] . apply ( server , args )
79
79
}
80
80
} )
81
81
} )
82
82
83
83
return server
84
84
}
85
85
86
- const handler = ( route , proxy , proxyHandler ) => async ( req , res ) => {
87
- req . url = req . url . replace ( route . prefix , route . prefixRewrite )
88
- const shouldAbortProxy = await route . hooks . onRequest ( req , res )
89
- if ( ! shouldAbortProxy ) {
90
- const proxyOpts = Object . assign ( {
91
- request : {
92
- timeout : req . timeout || route . timeout
93
- }
94
- } , route . hooks )
95
-
96
- proxyHandler ( req , res , req . url , proxy , proxyOpts )
86
+ const handler = ( route , proxy , proxyHandler ) => async ( req , res , next ) => {
87
+ try {
88
+ req . url = req . url . replace ( route . prefix , route . prefixRewrite )
89
+ const shouldAbortProxy = await route . hooks . onRequest ( req , res )
90
+ if ( ! shouldAbortProxy ) {
91
+ const proxyOpts = Object . assign ( {
92
+ request : {
93
+ timeout : req . timeout || route . timeout
94
+ }
95
+ } , route . hooks )
96
+
97
+ proxyHandler ( req , res , req . url , proxy , proxyOpts )
98
+ }
99
+ } catch ( err ) {
100
+ return next ( err )
97
101
}
98
102
}
99
103
0 commit comments