@@ -83,7 +83,11 @@ export class RouterExecutionContext {
8383 fnHandleResponse,
8484 paramtypes,
8585 getParamsMetadata,
86- } = this . getMetadata ( instance , callback , methodName , module ) ;
86+ httpStatusCode,
87+ responseHeaders,
88+ hasCustomHeaders,
89+ } = this . getMetadata ( instance , callback , methodName , module , requestMethod ) ;
90+
8791 const paramsOptions = this . contextUtils . mergeParamsMetatypes (
8892 getParamsMetadata ( module , contextId , inquirerId ) ,
8993 paramtypes ,
@@ -131,17 +135,7 @@ export class RouterExecutionContext {
131135 const args = this . contextUtils . createNullArray ( argsLength ) ;
132136 fnCanActivate && ( await fnCanActivate ( [ req , res ] ) ) ;
133137
134- const httpCode = this . reflectHttpStatusCode ( callback ) ;
135-
136- const httpStatusCode = httpCode
137- ? httpCode
138- : this . responseController . getStatusByMethod ( requestMethod ) ;
139-
140- this . responseController . status ( res , httpStatusCode ) ;
141-
142- const responseHeaders = this . reflectResponseHeaders ( callback ) ;
143- const hasCustomHeaders = ! isEmpty ( responseHeaders ) ;
144-
138+ this . responseController . setStatus ( res , httpStatusCode ) ;
145139 hasCustomHeaders &&
146140 this . responseController . setHeaders ( res , responseHeaders ) ;
147141
@@ -160,7 +154,8 @@ export class RouterExecutionContext {
160154 instance : Controller ,
161155 callback : ( ...args : any [ ] ) => any ,
162156 methodName : string ,
163- module : string
157+ module : string ,
158+ requestMethod : RequestMethod ,
164159 ) : HandlerMetadata {
165160 const cacheMetadata = this . handlerMetadataStorage . get ( instance , methodName ) ;
166161 if ( cacheMetadata ) {
@@ -199,13 +194,25 @@ export class RouterExecutionContext {
199194
200195 const fnHandleResponse = this . createHandleResponseFn (
201196 callback ,
202- isResponseHandled
197+ isResponseHandled ,
203198 ) ;
199+
200+ const httpCode = this . reflectHttpStatusCode ( callback ) ;
201+ const httpStatusCode = httpCode
202+ ? httpCode
203+ : this . responseController . getStatusByMethod ( requestMethod ) ;
204+
205+ const responseHeaders = this . reflectResponseHeaders ( callback ) ;
206+ const hasCustomHeaders = ! isEmpty ( responseHeaders ) ;
207+
204208 const handlerMetadata : HandlerMetadata = {
205209 argsLength,
206210 fnHandleResponse,
207211 paramtypes,
208212 getParamsMetadata,
213+ httpStatusCode,
214+ hasCustomHeaders,
215+ responseHeaders,
209216 } ;
210217 this . handlerMetadataStorage . set ( instance , methodName , handlerMetadata ) ;
211218 return handlerMetadata ;
@@ -350,7 +357,7 @@ export class RouterExecutionContext {
350357 public createHandleResponseFn (
351358 callback : ( ...args : any [ ] ) => any ,
352359 isResponseHandled : boolean ,
353- httpStatusCode ?: number
360+ httpStatusCode ?: number ,
354361 ) {
355362 const renderTemplate = this . reflectRenderTemplate ( callback ) ;
356363
0 commit comments