Files
hummingbird-docc/Samples/HummingbirdDocC/Builders/AppBuilder.swift
T

52 lines
1.4 KiB
Swift
Raw Normal View History

// ===----------------------------------------------------------------------===
//
// 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
)
}
}