Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions Sources/OpenAPILambda.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,23 @@ extension OpenAPILambdaService {
/// try await lambdaRuntime.run()
///
/// - Returns: A handler function that can be used with AWS Lambda Runtime
public static func handler() throws -> (Event, LambdaContext) async throws -> Output {
try OpenAPILambdaHandler<Self>().handler
public static func makeHandler() throws -> OpenAPILambdaHandler<Self> {
try OpenAPILambdaHandler<Self>()
}

/// Start the Lambda Runtime with the Lambda handler function for this OpenAPI Lambda implementation with a custom logger,
/// when one is given.
/// - Parameter logger: The logger to use for Lambda runtime logging
public static func run(logger: Logger? = nil) async throws {
let _logger = logger ?? Logger(label: "OpenAPILambdaService")
let lambdaRuntime = LambdaRuntime(logger: _logger, body: try Self.handler())

let handler = LambdaCodableAdapter(
encoder: JSONEncoder(),
decoder: JSONDecoder(),
handler: LambdaHandlerAdapter(handler: try Self.makeHandler())
)

let lambdaRuntime = LambdaRuntime(handler: handler, logger: _logger)
try await lambdaRuntime.run()
}
}
4 changes: 2 additions & 2 deletions Sources/OpenAPILambdaHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import OpenAPIRuntime
import HTTPTypes

/// Specialization of LambdaHandler which runs an OpenAPILambda
public struct OpenAPILambdaHandler<OALS: OpenAPILambdaService>: Sendable {
public struct OpenAPILambdaHandler<OALS: OpenAPILambdaService>: LambdaHandler {

private let router: OpenAPILambdaRouter
private let transport: OpenAPILambdaTransport
Expand Down Expand Up @@ -65,7 +65,7 @@ public struct OpenAPILambdaHandler<OALS: OpenAPILambdaService>: Sendable {
/// - context: Runtime ``LambdaContext``.
///
/// - Returns: A Lambda result ot type `Output`.
public func handler(event: OALS.Event, context: LambdaContext) async throws -> OALS.Output {
public func handle(_ event: OALS.Event, context: AWSLambdaRuntime.LambdaContext) async throws -> OALS.Output {

// by default returns HTTP 500
var lambdaResponse: OpenAPILambdaResponse = (HTTPResponse(status: .internalServerError), "unknown error")
Expand Down
Loading