diff --git a/Sources/SwiftAwsLambda/Lambda+Codable.swift b/Sources/SwiftAwsLambda/Lambda+Codable.swift index cfbca497..2de547d9 100644 --- a/Sources/SwiftAwsLambda/Lambda+Codable.swift +++ b/Sources/SwiftAwsLambda/Lambda+Codable.swift @@ -27,7 +27,7 @@ extension Lambda { /// Run a Lambda defined by implementing the `LambdaCodableHandler` protocol, having `In` and `Out` are `Decodable` and `Encodable` respectively. /// /// - note: This is a blocking operation that will run forever, as it's lifecycle is managed by the AWS Lambda Runtime Engine. - public static func run(_ handler: T) where T: LambdaCodableHandler { + public static func run(_ handler: Handler) where Handler: LambdaCodableHandler { self.run(handler as LambdaHandler) } @@ -37,13 +37,13 @@ extension Lambda { } // for testing - internal static func run(handler: T, maxTimes: Int = 0) -> LambdaLifecycleResult where T: LambdaCodableHandler { + internal static func run(handler: Handler, maxTimes: Int = 0) -> LambdaLifecycleResult where Handler: LambdaCodableHandler { return self.run(handler: handler as LambdaHandler, maxTimes: maxTimes) } } /// A result type for a Lambda that returns a generic `Out`, having `Out` extend `Encodable`. -public typealias LambdaCodableResult = Result +public typealias LambdaCodableResult = ResultType /// A callback for a Lambda that returns a `LambdaCodableResult` result type, having `Out` extend `Encodable`. public typealias LambdaCodableCallback = (LambdaCodableResult) -> Void diff --git a/Sources/SwiftAwsLambda/Lambda+String.swift b/Sources/SwiftAwsLambda/Lambda+String.swift index 407a0469..9eb47788 100644 --- a/Sources/SwiftAwsLambda/Lambda+String.swift +++ b/Sources/SwiftAwsLambda/Lambda+String.swift @@ -40,7 +40,7 @@ extension Lambda { } /// A result type for a Lambda that returns a `String`. -public typealias LambdaStringResult = Result +public typealias LambdaStringResult = ResultType /// A callback for a Lambda that returns a `LambdaStringResult` result type. public typealias LambdaStringCallback = (LambdaStringResult) -> Void @@ -53,13 +53,10 @@ public protocol LambdaStringHandler: LambdaHandler { func handle(context: LambdaContext, payload: String, callback: @escaping LambdaStringCallback) } -/// Default implementation of `String` -> `[UInt8]` encoding and `[UInt8]` -> `String' decoding +/// Default implementation of `String` -> `[UInt8]` encoding and `[UInt8]` -> `String' decoding public extension LambdaStringHandler { func handle(context: LambdaContext, payload: [UInt8], callback: @escaping LambdaCallback) { - guard let payloadAsString = String(bytes: payload, encoding: .utf8) else { - return callback(.failure("failed casting payload to String")) - } - self.handle(context: context, payload: payloadAsString, callback: { result in + self.handle(context: context, payload: String(decoding: payload, as: UTF8.self), callback: { result in switch result { case let .success(string): return callback(.success([UInt8](string.utf8))) diff --git a/Sources/SwiftAwsLambda/Lambda.swift b/Sources/SwiftAwsLambda/Lambda.swift index a6c79b79..6b3b3be0 100644 --- a/Sources/SwiftAwsLambda/Lambda.swift +++ b/Sources/SwiftAwsLambda/Lambda.swift @@ -139,7 +139,7 @@ public enum Lambda { } /// A result type for a Lambda that returns a `[UInt8]`. -public typealias LambdaResult = Result<[UInt8], String> +public typealias LambdaResult = ResultType<[UInt8], String> public typealias LambdaCallback = (LambdaResult) -> Void @@ -169,7 +169,7 @@ public struct LambdaContext { } } -internal typealias LambdaLifecycleResult = Result +internal typealias LambdaLifecycleResult = ResultType private struct LambdaClosureWrapper: LambdaHandler { private let closure: LambdaClosure diff --git a/Sources/SwiftAwsLambda/LambdaRunner.swift b/Sources/SwiftAwsLambda/LambdaRunner.swift index a6a59b4d..a7e93fad 100644 --- a/Sources/SwiftAwsLambda/LambdaRunner.swift +++ b/Sources/SwiftAwsLambda/LambdaRunner.swift @@ -63,7 +63,7 @@ internal final class LambdaRunner { } } -internal typealias LambdaRunResult = Result<(), Error> +internal typealias LambdaRunResult = ResultType<(), Error> private extension LambdaHandler { func handle(context: LambdaContext, payload: [UInt8], promise: EventLoopPromise) { diff --git a/Sources/SwiftAwsLambda/LambdaRuntimeClient.swift b/Sources/SwiftAwsLambda/LambdaRuntimeClient.swift index 3ec27286..71bd2c73 100644 --- a/Sources/SwiftAwsLambda/LambdaRuntimeClient.swift +++ b/Sources/SwiftAwsLambda/LambdaRuntimeClient.swift @@ -76,8 +76,8 @@ internal class LambdaRuntimeClient { } } -internal typealias RequestWorkResult = Result<(LambdaContext, [UInt8]), LambdaRuntimeClientError> -internal typealias PostResultsResult = Result<(), LambdaRuntimeClientError> +internal typealias RequestWorkResult = ResultType<(LambdaContext, [UInt8]), LambdaRuntimeClientError> +internal typealias PostResultsResult = ResultType<(), LambdaRuntimeClientError> internal enum LambdaRuntimeClientError: Error { case badStatusCode(HTTPResponseStatus) diff --git a/Sources/SwiftAwsLambda/Utils.swift b/Sources/SwiftAwsLambda/Utils.swift index b795bcb4..330944d1 100644 --- a/Sources/SwiftAwsLambda/Utils.swift +++ b/Sources/SwiftAwsLambda/Utils.swift @@ -16,7 +16,7 @@ import Dispatch import NIO /// Genric result type, that is used throught the library. -public enum Result { +public enum ResultType { case success(Value) case failure(Error) } diff --git a/Tests/SwiftAwsLambdaTests/MockLambdaServer.swift b/Tests/SwiftAwsLambdaTests/MockLambdaServer.swift index 93d7d2d9..fc0f8108 100644 --- a/Tests/SwiftAwsLambdaTests/MockLambdaServer.swift +++ b/Tests/SwiftAwsLambdaTests/MockLambdaServer.swift @@ -189,7 +189,7 @@ internal protocol LambdaServerBehavior { func processError(requestId: String, error: ErrorResponse) -> ProcessErrorResult } -internal typealias GetWorkResult = Result<(String, String), GetWorkError> +internal typealias GetWorkResult = ResultType<(String, String), GetWorkError> internal enum GetWorkError: Int { case badRequest = 400 @@ -209,7 +209,7 @@ internal enum ProcessResponseError: Int { case internalServerError = 500 } -internal typealias ProcessErrorResult = Result<(), ProcessError> +internal typealias ProcessErrorResult = ResultType<(), ProcessError> internal enum ProcessError: Int, Error { case invalidErrorShape = 299