@@ -59,32 +59,35 @@ export class Response implements TwilioResponse {
59
59
if ( typeof headersObject !== 'object' ) {
60
60
return this ;
61
61
}
62
- if ( ! ( COOKIE_HEADER in headersObject ) ) {
63
- headersObject [ COOKIE_HEADER ] = [ ] ;
64
- }
65
-
66
- const cookieHeader = headersObject [ COOKIE_HEADER ] ;
67
- if ( ! Array . isArray ( cookieHeader ) ) {
68
- headersObject [ COOKIE_HEADER ] = [ cookieHeader ] ;
62
+ this . headers = { } ;
63
+ for ( const header in headersObject ) {
64
+ this . appendHeader ( header , headersObject [ header ] ) ;
69
65
}
70
- this . headers = headersObject ;
71
66
72
67
return this ;
73
68
}
74
69
75
70
appendHeader ( key : string , value : HeaderValue ) : Response {
76
71
log ( 'Appending header for %s' , key , value ) ;
77
72
this . headers = this . headers || { } ;
78
- const existingValue = this . headers [ key ] ;
79
73
let newHeaderValue : HeaderValue = [ ] ;
80
- if ( existingValue ) {
81
- newHeaderValue = [ existingValue , value ] . flat ( ) ;
82
- if ( newHeaderValue ) {
83
- this . headers [ key ] = newHeaderValue ;
74
+ if ( key . toLowerCase ( ) === COOKIE_HEADER . toLowerCase ( ) ) {
75
+ const existingValue = this . headers [ COOKIE_HEADER ] ;
76
+ if ( existingValue ) {
77
+ newHeaderValue = [ existingValue , value ] . flat ( ) ;
78
+ if ( newHeaderValue ) {
79
+ this . headers [ COOKIE_HEADER ] = newHeaderValue ;
80
+ }
81
+ } else {
82
+ this . headers [ COOKIE_HEADER ] = Array . isArray ( value ) ? value : [ value ] ;
84
83
}
85
84
} else {
86
- if ( key === COOKIE_HEADER && ! Array . isArray ( value ) ) {
87
- this . headers [ key ] = [ value ] ;
85
+ const existingValue = this . headers [ key ] ;
86
+ if ( existingValue ) {
87
+ newHeaderValue = [ existingValue , value ] . flat ( ) ;
88
+ if ( newHeaderValue ) {
89
+ this . headers [ key ] = newHeaderValue ;
90
+ }
88
91
} else {
89
92
this . headers [ key ] = value ;
90
93
}
0 commit comments