@@ -2,6 +2,7 @@ const fastProxy = require('fast-proxy')
2
2
const restana = require ( 'restana' )
3
3
const pump = require ( 'pump' )
4
4
const toArray = require ( 'stream-to-array' )
5
+ const defaultProxyHandler = ( req , res , url , proxy , proxyOpts ) => proxy ( req , res , url , proxyOpts )
5
6
6
7
const gateway = ( opts ) => {
7
8
opts = Object . assign ( {
@@ -48,19 +49,31 @@ const gateway = (opts) => {
48
49
...( opts . fastProxy )
49
50
} )
50
51
52
+ // route proxy handler function
53
+ const proxyHandler = route . proxyHandler || defaultProxyHandler
54
+
55
+ // populating timeout config
56
+ route . timeout = route . timeout || opts . timeout
57
+
51
58
// registering route handler
52
59
const methods = route . methods || [ 'DELETE' , 'GET' , 'HEAD' , 'PATCH' , 'POST' , 'PUT' , 'OPTIONS' ]
53
- server . route ( methods , route . prefix + route . pathRegex , handler ( route , proxy ) , null , route . middlewares )
60
+ server . route ( methods , route . prefix + route . pathRegex , handler ( route , proxy , proxyHandler ) , null , route . middlewares )
54
61
} )
55
62
56
63
return server
57
64
}
58
65
59
- const handler = ( route , proxy ) => async ( req , res ) => {
66
+ const handler = ( route , proxy , proxyHandler ) => async ( req , res ) => {
60
67
req . url = req . url . replace ( route . prefix , route . prefixRewrite )
61
68
const shouldAbortProxy = await route . hooks . onRequest ( req , res )
62
69
if ( ! shouldAbortProxy ) {
63
- proxy ( req , res , req . url , Object . assign ( { } , route . hooks ) )
70
+ const proxyOpts = Object . assign ( {
71
+ request : {
72
+ timeout : req . timeout || route . timeout
73
+ }
74
+ } , route . hooks )
75
+
76
+ proxyHandler ( req , res , req . url , proxy , proxyOpts )
64
77
}
65
78
}
66
79
0 commit comments