Skip to content

Commit 9b7364d

Browse files
committed
Implement Request and Response
1 parent 73b8433 commit 9b7364d

File tree

1 file changed

+45
-2
lines changed

1 file changed

+45
-2
lines changed
Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,46 @@
1-
struct AWSLambdaRuntime {
2-
var text = "Hello, World!"
1+
import Foundation
2+
3+
public struct Runtime {
4+
public struct Request {
5+
let payload: Data
6+
let requestID: String
7+
let xrayTraceID: String
8+
let clientContext: String
9+
let cognitoIdentifier: String
10+
let functionARN: String
11+
let deadline: Date
12+
var remainingTime: Date {
13+
return Date()
14+
}
15+
}
16+
17+
public enum Response {
18+
case success(payload: Data, contentType: String)
19+
case failure(errorMessage: String, errorType: String)
20+
21+
private struct RawError: Encodable {
22+
let errorMessage: String
23+
let errorType: String
24+
let stackTrace: [String] = []
25+
}
26+
27+
public var payload: Data {
28+
switch self {
29+
case .success(let payload, _):
30+
return payload
31+
case .failure(let errorMessage, let errorType):
32+
let error = RawError(errorMessage: errorMessage, errorType: errorType)
33+
return try! JSONEncoder().encode(error)
34+
}
35+
}
36+
37+
public var contentType: String {
38+
switch self {
39+
case .success(_, let contentType):
40+
return contentType
41+
case .failure:
42+
return "application/json"
43+
}
44+
}
45+
}
346
}

0 commit comments

Comments
 (0)