@@ -25,7 +25,7 @@ class MockSocket extends Duplex {
2525}
2626
2727class Request extends IncomingMessage {
28- constructor ( event , context = { } , platform ) {
28+ constructor ( event , context = { } , platform , getwayType ) {
2929 const {
3030 method,
3131 url,
@@ -35,8 +35,7 @@ class Request extends IncomingMessage {
3535 rawBodyBuf,
3636 remoteAddress,
3737 isEncrypted
38- } = Request . _normalize ( event , context , platform ) ;
39-
38+ } = Request . _normalize ( event , context , platform , getwayType ) ;
4039 const mockSocket = new MockSocket ( {
4140 remoteAddress,
4241 encrypted : isEncrypted
@@ -46,8 +45,6 @@ class Request extends IncomingMessage {
4645
4746 this . event = event ;
4847 this . context = context ;
49- this . _platform = platform ;
50-
5148 this . method = method || 'GET' ;
5249 this . url = url || '/' ;
5350 this . headers = headers || { } ;
@@ -62,111 +59,122 @@ class Request extends IncomingMessage {
6259
6360 this . push ( rawBodyBuf ) ;
6461 }
65- this . push ( null ) ; // always end the stream
62+ this . push ( null ) ;
6663
6764 this . body = rawBodyBuf ;
6865
6966 }
7067
71- static _normalize ( event , context , platform ) {
72- let method = 'GET' ,
73- url = '/' ,
74- headers = { } ,
75- query = { } ,
76- pathParams = { } ,
77- cookies = [ ] ,
78- rawBodyBuf = event . body ? ( event . isBase64Encoded
68+ static _normalize ( event , context , platform , getwayType ) {
69+ const request = {
70+ method : 'GET' ,
71+ url : '/' ,
72+ headers : { } ,
73+ query : { } ,
74+ pathParams : { } ,
75+ cookies : [ ] ,
76+ rawBodyBuf : event . body ? ( event . isBase64Encoded
7977 ? Buffer . from ( event . body , 'base64' )
8078 : Buffer . from ( event . body ) ) : Buffer . alloc ( 0 ) ,
81- remoteAddress = '' ,
82- isEncrypted = false ;
79+ remoteAddress : '' ,
80+ isEncrypted : false
81+ }
8382
8483 switch ( platform ) {
85- case 'aws_http' :
86- method = event . requestContext . http . method ;
87- url = event . rawPath + ( event . rawQueryString ? `?${ event . rawQueryString } ` : '' ) ;
88- headers = event . headers || { } ;
89- query = event . rawQueryString
90- ? Object . fromEntries ( new URLSearchParams ( event . rawQueryString ) )
91- : { } ;
92- pathParams = event . pathParameters || { } ;
93- cookies = event . cookies || [ ] ;
94- remoteAddress = event . requestContext ?. http ?. sourceIp ||
95- headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
96- isEncrypted = headers [ 'x-forwarded-proto' ] === 'https' ;
84+ case 'aws' :
85+ switch ( getwayType ) {
86+ case 'http' :
87+ request . method = event . requestContext . http . method ;
88+ request . url = event . rawPath + ( event . rawQueryString ? `?${ event . rawQueryString } ` : '' ) ;
89+ request . headers = event . headers || { } ;
90+ request . query = event . rawQueryString
91+ ? Object . fromEntries ( new URLSearchParams ( event . rawQueryString ) )
92+ : { } ;
93+ request . pathParams = event . pathParameters || { } ;
94+ request . cookies = event . cookies || [ ] ;
95+ request . remoteAddress = event . requestContext ?. http ?. sourceIp ||
96+ request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
97+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
98+
99+ break ;
100+ case 'lambda-url' :
101+ request . method = event . requestContext ?. http ?. method || 'GET' ;
102+ request . url = event . rawPath + ( event . rawQueryString ? `?${ event . rawQueryString } ` : '' ) ;
103+ request . headers = event . headers || { } ;
104+ request . query = event . rawQueryString
105+ ? Object . fromEntries ( new URLSearchParams ( event . rawQueryString ) )
106+ : { } ;
107+ request . pathParams = event . pathParameters || { } ;
108+ request . cookies = event . cookies || [ ] ;
109+ request . remoteAddress = event . requestContext ?. http ?. sourceIp ||
110+ request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
111+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
112+ break ;
113+
114+ case 'rest' :
115+ request . method = event . httpMethod ;
116+ request . url = event . path ;
117+ request . headers = event . headers || { } ;
118+ request . query = event . queryStringParameters || { } ;
119+ request . pathParams = event . pathParameters || { } ;
120+ request . cookies = request . headers . Cookie
121+ ? request . headers . Cookie . split ( ';' ) . map ( c => c . trim ( ) )
122+ : [ ] ;
123+ request . remoteAddress = request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
124+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
125+ break ;
126+ }
97127 break ;
98128
99- case 'aws_rest' :
100- method = event . httpMethod ;
101- url = event . path ;
102- headers = event . headers || { } ;
103- query = event . queryStringParameters || { } ;
104- pathParams = event . pathParameters || { } ;
105- cookies = headers . Cookie
106- ? headers . Cookie . split ( ';' ) . map ( c => c . trim ( ) )
107- : [ ] ;
108- remoteAddress = headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
109- isEncrypted = headers [ 'x-forwarded-proto' ] === 'https' ;
110- break ;
111129
112130 case 'azure' :
113131 const req = context . req || event ;
114- method = req . method ;
115- url = req . url ;
116- headers = req . headers || { } ;
117- query = req . query || { } ;
118- pathParams = req . params || { } ;
119- cookies = headers . cookie
120- ? headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
132+ request . method = req . method ;
133+ request . url = req . url ;
134+ request . headers = req . headers || { } ;
135+ request . query = req . query || { } ;
136+ request . pathParams = req . params || { } ;
137+ request . cookies = request . headers . cookie
138+ ? request . headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
121139 : [ ] ;
122- remoteAddress = headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
123- isEncrypted = headers [ 'x-forwarded-proto' ] === 'https' ;
140+ request . remoteAddress = request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
141+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
124142 if ( req . rawBody instanceof Buffer ) rawBodyBuf = req . rawBody ;
125143 else if ( req . rawBody ) rawBodyBuf = Buffer . from ( req . rawBody ) ;
126144 break ;
127145
128146 case 'gcp' :
129- method = event . method || event . httpMethod ;
130- url = event . url ||
147+ request . method = event . method || event . httpMethod ;
148+ request . url = event . url ||
131149 ( event . path + ( event . query ? '?' + new URLSearchParams ( event . query ) . toString ( ) : '' ) ) ;
132- headers = event . headers || { } ;
133- query = event . query || { } ;
134- pathParams = event . params || { } ;
135- cookies = headers . cookie
136- ? headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
150+ request . headers = event . headers || { } ;
151+ request . query = event . query || { } ;
152+ request . pathParams = event . params || { } ;
153+ request . cookies = request . headers . cookie
154+ ? request . headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
137155 : [ ] ;
138- remoteAddress = headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
139- isEncrypted = headers [ 'x-forwarded-proto' ] === 'https' ;
156+ request . remoteAddress = request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '' ;
157+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
140158 break ;
141159
142160 default :
143- method = event . method || 'GET' ;
144- url = event . url || '/' ;
145- headers = event . headers || { } ;
146- query = event . rawQueryString || { } ;
147- pathParams = event . params || { } ;
148- cookies = headers . cookie
149- ? headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
161+ request . method = event . method || 'GET' ;
162+ request . url = event . url || '/' ;
163+ request . headers = event . headers || { } ;
164+ request . query = event . rawQueryString || { } ;
165+ request . pathParams = event . params || { } ;
166+ request . cookies = request . headers . cookie
167+ ? request . headers . cookie . split ( ';' ) . map ( c => c . trim ( ) )
150168 : [ ] ;
151- remoteAddress = headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '127.0.0.1' ;
152- isEncrypted = headers [ 'x-forwarded-proto' ] === 'https' ;
169+ request . remoteAddress = request . headers [ 'x-forwarded-for' ] ?. split ( ',' ) [ 0 ] || '127.0.0.1' ;
170+ request . isEncrypted = request . headers [ 'x-forwarded-proto' ] === 'https' ;
153171 }
154172
155- if ( ! headers . cookie && cookies . length > 0 ) {
156- headers . cookie = cookies . join ( '; ' ) ;
157- }
158173
159- return {
160- method,
161- url,
162- headers,
163- query,
164- pathParams,
165- cookies,
166- rawBodyBuf,
167- remoteAddress,
168- isEncrypted
169- } ;
174+ if ( ! request . headers . cookie && request . cookies . length > 0 ) {
175+ request . headers . cookie = request . cookies . join ( '; ' ) ;
176+ }
177+ return request ;
170178 }
171179}
172180
0 commit comments