diff --git a/Sources/AWSLambdaRuntime/Lambda+Codable.swift b/Sources/AWSLambdaRuntime/Lambda+Codable.swift index 6173b0d2..495e5a69 100644 --- a/Sources/AWSLambdaRuntime/Lambda+Codable.swift +++ b/Sources/AWSLambdaRuntime/Lambda+Codable.swift @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// @_exported import AWSLambdaRuntimeCore +import struct Foundation.Data import class Foundation.JSONDecoder import class Foundation.JSONEncoder import NIO @@ -130,3 +131,17 @@ extension JSONEncoder: LambdaCodableEncoder { return buffer } } + +extension JSONEncoder { + /// Convenience method to allow encoding json directly into a `String`. It can be used to encode a payload into an `APIGateway.V2.Response`'s body. + public func encodeAsString(_ value: T) throws -> String { + try String(decoding: self.encode(value), as: Unicode.UTF8.self) + } +} + +extension JSONDecoder { + /// Convenience method to allow decoding json directly from a `String`. It can be used to decode a payload from an `APIGateway.V2.Request`'s body. + public func decode(_ type: T.Type, from string: String) throws -> T { + try self.decode(type, from: Data(string.utf8)) + } +}