From a79b0e31e73731bebb92084c894a00a75010d95a Mon Sep 17 00:00:00 2001 From: ainame Date: Mon, 23 Sep 2024 17:20:39 +0100 Subject: [PATCH] Update Hummingbird package to v2 --- swift/hummingbird-framework/Package.swift | 11 ++++--- .../Sources/server/Server.swift | 30 +++++++++++++++++++ .../Sources/server/main.swift | 30 ------------------- swift/hummingbird-framework/config.yaml | 2 +- 4 files changed, 36 insertions(+), 37 deletions(-) create mode 100644 swift/hummingbird-framework/Sources/server/Server.swift delete mode 100644 swift/hummingbird-framework/Sources/server/main.swift diff --git a/swift/hummingbird-framework/Package.swift b/swift/hummingbird-framework/Package.swift index a0e0604e1e5..2dba64920a0 100644 --- a/swift/hummingbird-framework/Package.swift +++ b/swift/hummingbird-framework/Package.swift @@ -1,18 +1,17 @@ -// swift-tools-version:5.3 +// swift-tools-version:5.10 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "server", - products: [ - .executable(name: "server", targets: ["server"]) - ], + platforms: [.macOS(.v14)], // This is for development on macOS dependencies: [ - .package(url: "https://github.com/hummingbird-project/hummingbird.git", .upToNextMinor(from: "1.0.0")), + .package(url: "https://github.com/hummingbird-project/hummingbird.git", .upToNextMinor(from: "2.0.0")), ], targets: [ - .target(name: "server", + .executableTarget( + name: "server", dependencies: [ .product(name: "Hummingbird", package: "hummingbird"), ], diff --git a/swift/hummingbird-framework/Sources/server/Server.swift b/swift/hummingbird-framework/Sources/server/Server.swift new file mode 100644 index 00000000000..6506758ad66 --- /dev/null +++ b/swift/hummingbird-framework/Sources/server/Server.swift @@ -0,0 +1,30 @@ +import Hummingbird + +@main +struct Server { + static func main() async throws { + let env = Environment() + let serverHostName = env.get("SERVER_HOSTNAME") ?? "127.0.0.1" + let serverPort = env.get("SERVER_PORT", as: Int.self) ?? 8080 + + let router = Router() + router.get("/") { _, _ in + HTTPResponse.Status.ok + } + + router.get("user/:id") { _, ctx -> String in + ctx.parameters.get("id") ?? "" + } + + router.post("user") { _, _ in + HTTPResponse.Status.ok + } + + let app = Application( + router: router, + configuration: .init(address: .hostname(serverHostName, port: serverPort)) + ) + + try await app.run() + } +} diff --git a/swift/hummingbird-framework/Sources/server/main.swift b/swift/hummingbird-framework/Sources/server/main.swift deleted file mode 100644 index 183355d602e..00000000000 --- a/swift/hummingbird-framework/Sources/server/main.swift +++ /dev/null @@ -1,30 +0,0 @@ -import Hummingbird - -func runApp() throws { - let env = HBEnvironment() - let serverHostName = env.get("SERVER_HOSTNAME") ?? "127.0.0.1" - let serverPort = env.get("SERVER_PORT", as: Int.self) ?? 8080 - let app = HBApplication( - configuration: .init( - address: .hostname(serverHostName, port: serverPort), - enableHttpPipelining: false - ) - ) - - app.router.get("/") { _ in - return HBResponse(status: .ok) - } - - app.router.get("user/:id") { req -> String in - req.parameters.get("id") ?? "" - } - - app.router.post("user") { _ in - return HBResponse(status: .ok) - } - - try app.start() - app.wait() -} - -try runApp() diff --git a/swift/hummingbird-framework/config.yaml b/swift/hummingbird-framework/config.yaml index 769689913bc..b95f98ea764 100644 --- a/swift/hummingbird-framework/config.yaml +++ b/swift/hummingbird-framework/config.yaml @@ -1,6 +1,6 @@ framework: github: hummingbird-project/hummingbird - version: 1.0 + version: 2.0 name: hummingbird environment: