// ===----------------------------------------------------------------------=== // // This source file is part of the Hummingbird DocC Middleware open source project // // Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC Middleware project authors // Licensed under the EUPL 1.2 or later. // // See LICENSE for license information // See CONTRIBUTORS for the list of Hummingbird DocC Middleware project authors // // ===----------------------------------------------------------------------=== import class Hummingbird.Router import protocol Hummingbird.ApplicationProtocol import struct Hummingbird.Application import struct Hummingbird.BindAddress import struct Logging.Logger struct AppBuilder { // MARK: Properties /// A type that interacts with the logging system. private let logger: Logger // MARK: Initializers /// Initializes this builder. /// - Parameter logger: A type that interacts with the logging system. init(logger: Logger) { self.logger = logger } // MARK: Functions func callAsFunction( _ arguments: AppArguments ) -> some ApplicationProtocol { let router = Router() return Application( router: router, configuration: .init( address: .hostname(arguments.hostname, port: arguments.port) ), logger: logger ) } }