33// MacroLambda
44//
55// Created by Helge Heß
6- // Copyright © 2020 ZeeZide GmbH. All rights reserved.
6+ // Copyright © 2020-2021 ZeeZide GmbH. All rights reserved.
77//
88
99#if canImport(AWSLambdaEvents)
@@ -73,16 +73,15 @@ internal extension AWSLambdaEvents.HTTPMultiValueHeaders {
7373internal extension NIOHTTP1 . HTTPHeaders {
7474
7575 @inlinable
76- func asLambda( ) -> ( single : AWSLambdaEvents . HTTPHeaders ? ,
77- multi : AWSLambdaEvents . HTTPMultiValueHeaders ? ,
76+ func asLambda( ) -> ( headers : AWSLambdaEvents . HTTPHeaders ? ,
7877 cookies : [ String ] ? )
7978 {
80- guard !isEmpty else { return ( nil , nil , nil ) }
79+ guard !isEmpty else { return ( nil , nil ) }
8180
8281 // Those do no proper CI, lets hope they are consistent
83- var single = AWSLambdaEvents . HTTPHeaders ( )
84- var multi = AWSLambdaEvents . HTTPMultiValueHeaders ( )
82+ var headers = AWSLambdaEvents . HTTPHeaders ( )
8583 var cookies = [ String ] ( )
84+ headers. reserveCapacity ( headers. count)
8685
8786 // Schnüff, we don't get NIO's `compareCaseInsensitiveASCIIBytes`
8887 for ( name, value ) in self {
@@ -93,22 +92,20 @@ internal extension NIOHTTP1.HTTPHeaders {
9392 cookies. append ( value)
9493 }
9594 else {
96- if let other = single. removeValue ( forKey: name) {
97- assert ( multi [ name] == nil )
98- multi [ name] = [ other, value ]
99- }
100- else if var values = multi. removeValue ( forKey: name) {
101- values. append ( value)
102- multi [ name] = values
95+ if let existing = headers. removeValue ( forKey: name) {
96+ // Don't know, SwiftLambda 0.4 dropped the multiheaders? What should
97+ // we do for dupes?
98+ if value . isEmpty { }
99+ else if existing. isEmpty { headers [ name] = value }
100+ else { headers [ name] = existing + " , " + value }
103101 }
104102 else {
105- single [ name] = value
103+ headers [ name] = value
106104 }
107105 }
108106 }
109107
110- return ( single : single . isEmpty ? nil : single,
111- multi : multi . isEmpty ? nil : multi,
108+ return ( headers : headers. isEmpty ? nil : headers,
112109 cookies : cookies. isEmpty ? nil : cookies )
113110 }
114111}
0 commit comments