@@ -16,6 +16,70 @@ import Dispatch
1616import Logging
1717import NIOCore
1818
19+ // MARK: - Client Context
20+
21+ /// AWS Mobile SDK client fields.
22+ public struct ClientApplication : Codable , Sendable {
23+ /// The mobile app installation id
24+ public let installationID : String ?
25+ /// The app title for the mobile app as registered with AWS' mobile services.
26+ public let appTitle : String ?
27+ /// The version name of the application as registered with AWS' mobile services.
28+ public let appVersionName : String ?
29+ /// The app version code.
30+ public let appVersionCode : String ?
31+ /// The package name for the mobile application invoking the function
32+ public let appPackageName : String ?
33+
34+ private enum CodingKeys : String , CodingKey {
35+ case installationID = " installation_id "
36+ case appTitle = " app_title "
37+ case appVersionName = " app_version_name "
38+ case appVersionCode = " app_version_code "
39+ case appPackageName = " app_package_name "
40+ }
41+
42+ public init (
43+ installationID: String ? = nil ,
44+ appTitle: String ? = nil ,
45+ appVersionName: String ? = nil ,
46+ appVersionCode: String ? = nil ,
47+ appPackageName: String ? = nil
48+ ) {
49+ self . installationID = installationID
50+ self . appTitle = appTitle
51+ self . appVersionName = appVersionName
52+ self . appVersionCode = appVersionCode
53+ self . appPackageName = appPackageName
54+ }
55+ }
56+
57+ /// For invocations from the AWS Mobile SDK, data about the client application and device.
58+ public struct ClientContext : Codable , Sendable {
59+ /// Information about the mobile application invoking the function.
60+ public let client : ClientApplication ?
61+ /// Custom properties attached to the mobile event context.
62+ public let custom : [ String : String ] ?
63+ /// Environment settings from the mobile client.
64+ public let environment : [ String : String ] ?
65+
66+ private enum CodingKeys : String , CodingKey {
67+ case client
68+ case custom
69+ case environment = " env "
70+ }
71+
72+ public init (
73+ client: ClientApplication ? = nil ,
74+ custom: [ String : String ] ? = nil ,
75+ environment: [ String : String ] ? = nil
76+ ) {
77+ self . client = client
78+ self . custom = custom
79+ self . environment = environment
80+ }
81+ }
82+
1983// MARK: - Context
2084
2185/// Lambda runtime context.
@@ -27,7 +91,7 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable {
2791 let invokedFunctionARN : String
2892 let deadline : DispatchWallTime
2993 let cognitoIdentity : String ?
30- let clientContext : String ?
94+ let clientContext : ClientContext ?
3195 let logger : Logger
3296
3397 init (
@@ -36,7 +100,7 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable {
36100 invokedFunctionARN: String ,
37101 deadline: DispatchWallTime ,
38102 cognitoIdentity: String ? ,
39- clientContext: String ? ,
103+ clientContext: ClientContext ? ,
40104 logger: Logger
41105 ) {
42106 self . requestID = requestID
@@ -77,7 +141,7 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable {
77141 }
78142
79143 /// For invocations from the AWS Mobile SDK, data about the client application and device.
80- public var clientContext : String ? {
144+ public var clientContext : ClientContext ? {
81145 self . storage. clientContext
82146 }
83147
@@ -94,7 +158,7 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable {
94158 invokedFunctionARN: String ,
95159 deadline: DispatchWallTime ,
96160 cognitoIdentity: String ? = nil ,
97- clientContext: String ? = nil ,
161+ clientContext: ClientContext ? = nil ,
98162 logger: Logger
99163 ) {
100164 self . storage = _Storage (
@@ -117,7 +181,7 @@ public struct LambdaContext: CustomDebugStringConvertible, Sendable {
117181 }
118182
119183 public var debugDescription : String {
120- " \( Self . self) (requestID: \( self . requestID) , traceID: \( self . traceID) , invokedFunctionARN: \( self . invokedFunctionARN) , cognitoIdentity: \( self . cognitoIdentity ?? " nil " ) , clientContext: \( self . clientContext ?? " nil " ) , deadline: \( self . deadline) ) "
184+ " \( Self . self) (requestID: \( self . requestID) , traceID: \( self . traceID) , invokedFunctionARN: \( self . invokedFunctionARN) , cognitoIdentity: \( self . cognitoIdentity ?? " nil " ) , clientContext: \( String ( describing : self . clientContext) ) , deadline: \( self . deadline) ) "
121185 }
122186
123187 /// This interface is not part of the public API and must not be used by adopters. This API is not part of semver versioning.
0 commit comments