diff --git a/Examples/Simple/.dockerignore b/Examples/Simple/.dockerignore new file mode 100644 index 0000000..24e5b0a --- /dev/null +++ b/Examples/Simple/.dockerignore @@ -0,0 +1 @@ +.build diff --git a/Examples/Simple/Package.swift b/Examples/Simple/Package.swift new file mode 100644 index 0000000..5f9d882 --- /dev/null +++ b/Examples/Simple/Package.swift @@ -0,0 +1,30 @@ +// swift-tools-version:5.2 + +import PackageDescription + +let package = Package( + name: "swift-aws-lambda-events-samples", + platforms: [ + .macOS(.v10_13), + ], + products: [ + // demonstrate how to integrate with AWS API Gateway + .executable(name: "APIGateway", targets: ["APIGateway"]), + ], + dependencies: [ + // this is the dependency on the swift-aws-lambda-runtime library + // in real-world projects this would say + // FIXME: update this once the https://github.com/swift-server/swift-aws-lambda-runtime/pull/216 is merged + // .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0") + .package(url: "https://github.com/tomerd/swift-aws-lambda-runtime.git", .branch("remove-events")), + // this is the dependency on the swift-aws-lambda-events library + // .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime-events.git", from: "1.0.0") + .package(name: "swift-aws-lambda-events", path: "../.."), + ], + targets: [ + .target(name: "APIGateway", dependencies: [ + .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), + .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), + ]), + ] +) diff --git a/Examples/Simple/Sources/APIGateway/main.swift b/Examples/Simple/Sources/APIGateway/main.swift new file mode 100644 index 0000000..f18ecad --- /dev/null +++ b/Examples/Simple/Sources/APIGateway/main.swift @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftAWSLambdaRuntime open source project +// +// Copyright (c) 2020 Apple Inc. and the SwiftAWSLambdaRuntime project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +import AWSLambdaEvents +import AWSLambdaRuntime +import NIO + +// MARK: - Run Lambda + +Lambda.run(APIGatewayProxyLambda()) + +// MARK: - Handler, Request and Response + +// FIXME: Use proper Event abstractions once added to AWSLambdaRuntime +struct APIGatewayProxyLambda: EventLoopLambdaHandler { + public typealias In = APIGateway.V2.Request + public typealias Out = APIGateway.V2.Response + + public func handle(context: Lambda.Context, event: APIGateway.V2.Request) -> EventLoopFuture { + context.logger.debug("hello, api gateway!") + return context.eventLoop.makeSucceededFuture( + APIGateway.V2.Response(statusCode: .ok, body: "hello, world!") + ) + } +} diff --git a/Examples/Simple/Tests/LinuxMain.swift b/Examples/Simple/Tests/LinuxMain.swift new file mode 100644 index 0000000..c46de76 --- /dev/null +++ b/Examples/Simple/Tests/LinuxMain.swift @@ -0,0 +1,15 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftAWSLambdaRuntime open source project +// +// Copyright (c) 2020 Apple Inc. and the SwiftAWSLambdaRuntime project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +preconditionFailure("use `swift test --enable-test-discovery`") diff --git a/docker/docker-compose.1804.52.yaml b/docker/docker-compose.1804.52.yaml index 636c69b..33e0bcd 100644 --- a/docker/docker-compose.1804.52.yaml +++ b/docker/docker-compose.1804.52.yaml @@ -13,5 +13,8 @@ services: test: image: swift-aws-lambda-events:18.04-5.2 + test-samples: + image: swift-aws-lambda-events:18.04-5.2 + shell: image: swift-aws-lambda-events:18.04-5.2 diff --git a/docker/docker-compose.al2.52.yaml b/docker/docker-compose.al2.52.yaml index 35e6089..624fd40 100644 --- a/docker/docker-compose.al2.52.yaml +++ b/docker/docker-compose.al2.52.yaml @@ -11,5 +11,8 @@ services: test: image: swift-aws-lambda-events:al2-5.2 + test-samples: + image: swift-aws-lambda-events:al2-5.2 + shell: image: swift-aws-lambda-events:al2-5.2 diff --git a/docker/docker-compose.al2.53.yaml b/docker/docker-compose.al2.53.yaml index bad3f17..1bb94a8 100644 --- a/docker/docker-compose.al2.53.yaml +++ b/docker/docker-compose.al2.53.yaml @@ -11,5 +11,8 @@ services: test: image: swift-aws-lambda-events:al2-5.3 + test-samples: + image: swift-aws-lambda-events:al2-5.3 + shell: image: swift-aws-lambda-events:al2-5.3 diff --git a/docker/docker-compose.al2.54.yaml b/docker/docker-compose.al2.54.yaml index 6c0b1d7..c23061c 100644 --- a/docker/docker-compose.al2.54.yaml +++ b/docker/docker-compose.al2.54.yaml @@ -11,5 +11,8 @@ services: test: image: swift-aws-lambda-events:al2-5.4 + test-samples: + image: swift-aws-lambda-events:al2-5.4 + shell: image: swift-aws-lambda-events:al2-5.4 diff --git a/docker/docker-compose.al2.55.yaml b/docker/docker-compose.al2.55.yaml index a81f929..e56d906 100644 --- a/docker/docker-compose.al2.55.yaml +++ b/docker/docker-compose.al2.55.yaml @@ -11,5 +11,8 @@ services: test: image: swift-aws-lambda-events:al2-5.5 + test-samples: + image: swift-aws-lambda-events:al2-5.5 + shell: image: swift-aws-lambda-events:al2-5.5 diff --git a/docker/docker-compose.al2.main.yaml b/docker/docker-compose.al2.main.yaml index 8f96c15..19f822c 100644 --- a/docker/docker-compose.al2.main.yaml +++ b/docker/docker-compose.al2.main.yaml @@ -11,5 +11,8 @@ services: test: image: swift-aws-lambda-events:al2-main + test-samples: + image: swift-aws-lambda-events:al2-main + shell: image: swift-aws-lambda-events:al2-main diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index d161dd0..e7fba40 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -30,6 +30,13 @@ services: <<: *common command: /bin/bash -cl "swift test --enable-test-discovery -Xswiftc -warnings-as-errors $${SANITIZER_ARG-}" + test-samples: + <<: *common + command: >- + /bin/bash -clx " + swift build --package-path Examples/Simple + " + # util shell: