@@ -33,30 +33,38 @@ export class IncomingMessage extends EventEmitter implements http.IncomingMessag
3333 public socket = new Socket ( false , true ) ;
3434
3535 #_originalUrlParsed: URL ;
36+ private parameterNames : string [ ] = [ ] ;
3637
3738 constructor (
3839 private req : uWS . HttpRequest ,
3940 private res : uWS . HttpResponse ,
40- private parameterNames : string [ ] ,
41- private app : Application
41+ private app : Application ,
42+ initialData ?: {
43+ headers ?: http . IncomingHttpHeaders ;
44+ url ?: string ;
45+ method ?: string ;
46+ body ?: any ;
47+ query ?: string ;
48+ remoteAddress ?: ArrayBuffer ;
49+ }
4250 ) {
4351 super ( ) ;
4452
45- this . _headers = { } ;
46- this . req . forEach ( ( key , value ) => {
47- this . _headers [ key ] = value ;
53+ this . _headers = initialData ?. headers || { } ;
4854
49- // workaround: also consider 'referrer'
50- if ( key === "referer" ) {
51- this . _headers [ 'referrer' ] = value ;
52- }
53- } ) ;
55+ if ( ! initialData ?. headers ) {
56+ this . req . forEach ( ( key , value ) => this . _headers [ key ] = value ) ;
57+ }
5458
55- this . url = this . req . getUrl ( ) ;
56- this . method = this . req . getMethod ( ) . toUpperCase ( ) ;
59+ this . url = initialData ?. url || this . req . getUrl ( ) ;
60+ this . method = ( initialData ?. method || this . req . getMethod ( ) ) . toUpperCase ( ) ;
5761
58- this . _rawquery = this . req . getQuery ( ) ;
59- this . _remoteAddress = this . res . getRemoteAddressAsText ( ) ;
62+ this . _rawquery = initialData ?. query || this . req . getQuery ( ) ;
63+ this . _remoteAddress = initialData ?. remoteAddress || this . res . getRemoteAddressAsText ( ) ;
64+
65+ if ( this . _headers [ 'referer' ] ) {
66+ this . _headers [ 'referrer' ] = this . _headers [ 'referer' ] ;
67+ }
6068
6169 if ( this . _rawquery ) {
6270 this . url += `?${ this . _rawquery } ` ;
0 commit comments