diff --git a/Sources/HummingbirdHTTP2/HTTPServerBuilder+http2.swift b/Sources/HummingbirdHTTP2/HTTPServerBuilder+http2.swift index 769f4197..6c085903 100644 --- a/Sources/HummingbirdHTTP2/HTTPServerBuilder+http2.swift +++ b/Sources/HummingbirdHTTP2/HTTPServerBuilder+http2.swift @@ -70,4 +70,30 @@ extension HTTPServerBuilder { ) } } + + /// Build HTTP channel with HTTP2 upgrade + /// + /// Use in ``Hummingbird/Application`` initialization. + /// ``` + /// let app = Application( + /// router: router, + /// server: .http2Upgrade(configuration: .init(tlsConfiguration: tlsConfiguration)) + /// ) + /// ``` + /// - Parameters: + /// - tlsConfiguration: TLS configuration + /// - configuration: HTTP2 Upgrade channel configuration + /// - Returns: HTTPChannelHandler builder + public static func http2Upgrade( + tlsChannelConfiguration: TLSChannelConfiguration, + configuration: HTTP2UpgradeChannel.Configuration = .init() + ) throws -> HTTPServerBuilder { + .init { responder in + try HTTP2UpgradeChannel( + tlsChannelConfiguration: tlsChannelConfiguration, + configuration: configuration, + responder: responder + ) + } + } } diff --git a/Sources/HummingbirdTLS/HTTPServerBuilder+tls.swift b/Sources/HummingbirdTLS/HTTPServerBuilder+tls.swift index 8f7b3415..f59ce547 100644 --- a/Sources/HummingbirdTLS/HTTPServerBuilder+tls.swift +++ b/Sources/HummingbirdTLS/HTTPServerBuilder+tls.swift @@ -37,4 +37,26 @@ extension HTTPServerBuilder { try base.buildChildChannel(responder).withTLS(tlsConfiguration: tlsConfiguration) } } + + /// Build server supporting HTTP with TLS + /// + /// Use in ``Hummingbird/Application`` initialization. + /// ``` + /// let app = Application( + /// router: router, + /// server: .tls(.http1(), tlsConfiguration: tlsConfiguration) + /// ) + /// ``` + /// - Parameters: + /// - base: Base child channel to wrap with TLS + /// - configuration: TLS channel configuration + /// - Returns: HTTPChannelHandler builder + public static func tls( + _ base: HTTPServerBuilder = .http1(), + configuration: TLSChannelConfiguration + ) throws -> HTTPServerBuilder { + .init { responder in + try base.buildChildChannel(responder).withTLS(configuration: configuration) + } + } }