Skip to content

Commit 2623fef

Browse files
authored
feat(auth): Add metadata options for passing clientMetadata to APIs (#700)
* add clientmetadata options * adding integ tests * update readme * update readme
1 parent 5c3156b commit 2623fef

16 files changed

+338
-37
lines changed

AmplifyPlugins/Auth/AWSCognitoAuthPlugin.xcodeproj/project.pbxproj

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88

99
/* Begin PBXBuildFile section */
1010
17CD56B119F2F31BD4D27C0A /* Pods_AWSCognitoAuthPlugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58D3E33555611987B753EF2D /* Pods_AWSCognitoAuthPlugin.framework */; };
11+
21621E0C24DE1EFE00497A24 /* AWSAuthResendSignUpCodeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21621E0B24DE1EFE00497A24 /* AWSAuthResendSignUpCodeOptions.swift */; };
12+
21621E0E24DE1FC300497A24 /* AWSAttributeResendConfirmationCodeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21621E0D24DE1FC300497A24 /* AWSAttributeResendConfirmationCodeOptions.swift */; };
13+
21621E1024DE2D5600497A24 /* AWSUpdateUserAttributesOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21621E0F24DE2D5600497A24 /* AWSUpdateUserAttributesOptions.swift */; };
14+
21621E1224DE2D6100497A24 /* AWSUpdateUserAttributeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21621E1124DE2D6100497A24 /* AWSUpdateUserAttributeOptions.swift */; };
15+
21C2B50F24E1FA3800371597 /* amplifyconfiguration.json in Resources */ = {isa = PBXBuildFile; fileRef = 21C2B50E24E1FA3800371597 /* amplifyconfiguration.json */; };
16+
21C2B51224E3381200371597 /* AuthUserAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21C2B51124E3381200371597 /* AuthUserAttributesTests.swift */; };
17+
21C2B51424E35C1000371597 /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = 21C2B51324E35C1000371597 /* credentials.json */; };
1118
3AB72AEC1B90671D652C3F96 /* Pods_HostApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 234C2AFA9205B1766FB8E090 /* Pods_HostApp.framework */; };
1219
8337B0CA31C0E650D640B82C /* Pods_HostApp_AWSCognitoAuthPluginIntegrationTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 242DDB230CE2BA243E395217 /* Pods_HostApp_AWSCognitoAuthPluginIntegrationTests.framework */; };
1320
B40F165D24784AE300CDB920 /* AWSCognitoAuthPlugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B43DC7452410572400D40275 /* AWSCognitoAuthPlugin.framework */; };
@@ -113,7 +120,6 @@
113120
B4F3EA4F243A782700F23296 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F3EA4C243A782700F23296 /* ViewController.swift */; };
114121
B4F3EA50243A782700F23296 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F3EA4D243A782700F23296 /* AppDelegate.swift */; };
115122
B4F3EA51243A782700F23296 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F3EA4E243A782700F23296 /* SceneDelegate.swift */; };
116-
D8D4514C24C7AF2600EE2086 /* amplifyconfiguration.json in Resources */ = {isa = PBXBuildFile; fileRef = D8D4514B24C7AF2500EE2086 /* amplifyconfiguration.json */; };
117123
FA6B0EA8249443C90062AA59 /* AWSCognitoAuthPluginConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA6B0EA7249443C90062AA59 /* AWSCognitoAuthPluginConfigTests.swift */; };
118124
FECB988C412E46FD5961894A /* Pods_AWSCognitoAuthPlugin_AWSCognitoAuthPluginTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1674B6AE81501F6E278CE00B /* Pods_AWSCognitoAuthPlugin_AWSCognitoAuthPluginTests.framework */; };
119125
/* End PBXBuildFile section */
@@ -147,6 +153,13 @@
147153
1218D5A8F8902BF0D88AFB50 /* Pods-HostApp-AWSCognitoAuthPluginIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostApp-AWSCognitoAuthPluginIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-HostApp-AWSCognitoAuthPluginIntegrationTests/Pods-HostApp-AWSCognitoAuthPluginIntegrationTests.release.xcconfig"; sourceTree = "<group>"; };
148154
1674B6AE81501F6E278CE00B /* Pods_AWSCognitoAuthPlugin_AWSCognitoAuthPluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AWSCognitoAuthPlugin_AWSCognitoAuthPluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
149155
1E372E3DB1CE31F318AE8281 /* Pods-HostApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostApp.debug.xcconfig"; path = "Target Support Files/Pods-HostApp/Pods-HostApp.debug.xcconfig"; sourceTree = "<group>"; };
156+
21621E0B24DE1EFE00497A24 /* AWSAuthResendSignUpCodeOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSAuthResendSignUpCodeOptions.swift; sourceTree = "<group>"; };
157+
21621E0D24DE1FC300497A24 /* AWSAttributeResendConfirmationCodeOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSAttributeResendConfirmationCodeOptions.swift; sourceTree = "<group>"; };
158+
21621E0F24DE2D5600497A24 /* AWSUpdateUserAttributesOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSUpdateUserAttributesOptions.swift; sourceTree = "<group>"; };
159+
21621E1124DE2D6100497A24 /* AWSUpdateUserAttributeOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSUpdateUserAttributeOptions.swift; sourceTree = "<group>"; };
160+
21C2B50E24E1FA3800371597 /* amplifyconfiguration.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = amplifyconfiguration.json; sourceTree = "<group>"; };
161+
21C2B51124E3381200371597 /* AuthUserAttributesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthUserAttributesTests.swift; sourceTree = "<group>"; };
162+
21C2B51324E35C1000371597 /* credentials.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = credentials.json; sourceTree = "<group>"; };
150163
234C2AFA9205B1766FB8E090 /* Pods_HostApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HostApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
151164
242DDB230CE2BA243E395217 /* Pods_HostApp_AWSCognitoAuthPluginIntegrationTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HostApp_AWSCognitoAuthPluginIntegrationTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
152165
351EEBA51873352B4E797CE0 /* Pods-HostApp-AWSAuthPluginIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostApp-AWSAuthPluginIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-HostApp-AWSAuthPluginIntegrationTests/Pods-HostApp-AWSAuthPluginIntegrationTests.release.xcconfig"; sourceTree = "<group>"; };
@@ -277,7 +290,6 @@
277290
B4F3EA4E243A782700F23296 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
278291
C49A4C812B0F973F5536DCC8 /* Pods-AWSAuthPlugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSAuthPlugin.release.xcconfig"; path = "Target Support Files/Pods-AWSAuthPlugin/Pods-AWSAuthPlugin.release.xcconfig"; sourceTree = "<group>"; };
279292
C5E50D8021B9740CB511898D /* Pods-AWSAuthPlugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSAuthPlugin.debug.xcconfig"; path = "Target Support Files/Pods-AWSAuthPlugin/Pods-AWSAuthPlugin.debug.xcconfig"; sourceTree = "<group>"; };
280-
D8D4514B24C7AF2500EE2086 /* amplifyconfiguration.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = amplifyconfiguration.json; sourceTree = "<group>"; };
281293
E9289652B314AA0AA1F31BC8 /* Pods-HostApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HostApp.release.xcconfig"; path = "Target Support Files/Pods-HostApp/Pods-HostApp.release.xcconfig"; sourceTree = "<group>"; };
282294
FA6B0EA7249443C90062AA59 /* AWSCognitoAuthPluginConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSCognitoAuthPluginConfigTests.swift; sourceTree = "<group>"; };
283295
/* End PBXFileReference section */
@@ -320,18 +332,27 @@
320332
/* End PBXFrameworksBuildPhase section */
321333

322334
/* Begin PBXGroup section */
335+
21C2B51024E337B700371597 /* AuthUserAttributesTests */ = {
336+
isa = PBXGroup;
337+
children = (
338+
21C2B51124E3381200371597 /* AuthUserAttributesTests.swift */,
339+
);
340+
path = AuthUserAttributesTests;
341+
sourceTree = "<group>";
342+
};
323343
B40F166324784B3400CDB920 /* AWSCognitoAuthPluginIntegrationTests */ = {
324344
isa = PBXGroup;
325345
children = (
326-
B40F166824784B3400CDB920 /* README.md */,
327-
B40F167724784B3400CDB920 /* AWSAuthBaseTest.swift */,
328346
B40F167824784B3400CDB920 /* AuthDeviceTests */,
329347
B40F167424784B3400CDB920 /* AuthSessionTests */,
330348
B40F167224784B3400CDB920 /* AuthSignInTests */,
331349
B44373A2247C8A0C00DEF43C /* AuthSignOutTests */,
332350
B40F166E24784B3400CDB920 /* AuthSignUpTests */,
351+
21C2B51024E337B700371597 /* AuthUserAttributesTests */,
333352
B40F166C24784B3400CDB920 /* AuthUserTests */,
353+
B40F167724784B3400CDB920 /* AWSAuthBaseTest.swift */,
334354
B40F166424784B3400CDB920 /* Configuration */,
355+
B40F166824784B3400CDB920 /* README.md */,
335356
B40F166624784B3400CDB920 /* Resources */,
336357
B40F166924784B3400CDB920 /* Support */,
337358
);
@@ -341,7 +362,8 @@
341362
B40F166424784B3400CDB920 /* Configuration */ = {
342363
isa = PBXGroup;
343364
children = (
344-
D8D4514B24C7AF2500EE2086 /* amplifyconfiguration.json */,
365+
21C2B50E24E1FA3800371597 /* amplifyconfiguration.json */,
366+
21C2B51324E35C1000371597 /* credentials.json */,
345367
);
346368
path = Configuration;
347369
sourceTree = "<group>";
@@ -487,10 +509,14 @@
487509
B41D0F492475A3960049D08D /* AWSAuthConfirmResetPasswordOptions.swift */,
488510
B41D0F432475A3960049D08D /* AWSAuthConfirmSignInOptions.swift */,
489511
B41D0F442475A3960049D08D /* AWSAuthConfirmSignUpOptions.swift */,
512+
21621E0B24DE1EFE00497A24 /* AWSAuthResendSignUpCodeOptions.swift */,
490513
B41D0F452475A3960049D08D /* AWSAuthResetPasswordOptions.swift */,
491514
B41D0F462475A3960049D08D /* AWSAuthSignInOptions.swift */,
492515
B41D0F472475A3960049D08D /* AWSAuthSignUpOptions.swift */,
493516
B41D0F482475A3960049D08D /* AWSAuthWebUISignInOptions.swift */,
517+
21621E0D24DE1FC300497A24 /* AWSAttributeResendConfirmationCodeOptions.swift */,
518+
21621E1124DE2D6100497A24 /* AWSUpdateUserAttributeOptions.swift */,
519+
21621E0F24DE2D5600497A24 /* AWSUpdateUserAttributesOptions.swift */,
494520
);
495521
path = Options;
496522
sourceTree = "<group>";
@@ -895,8 +921,9 @@
895921
isa = PBXResourcesBuildPhase;
896922
buildActionMask = 2147483647;
897923
files = (
924+
21C2B51424E35C1000371597 /* credentials.json in Resources */,
898925
B40F167C24784B3400CDB920 /* README.md in Resources */,
899-
D8D4514C24C7AF2600EE2086 /* amplifyconfiguration.json in Resources */,
926+
21C2B50F24E1FA3800371597 /* amplifyconfiguration.json in Resources */,
900927
);
901928
runOnlyForDeploymentPostprocessing = 0;
902929
};
@@ -1221,6 +1248,7 @@
12211248
B40F168724784B3400CDB920 /* AuthDeviceOperationTests.swift in Sources */,
12221249
B40F168124784B3400CDB920 /* AuthConfirmSignUpTests.swift in Sources */,
12231250
B40F167E24784B3400CDB920 /* AuthConfigurationHelper.swift in Sources */,
1251+
21C2B51224E3381200371597 /* AuthUserAttributesTests.swift in Sources */,
12241252
B44373A1247C869100DEF43C /* AuthSessionHelper.swift in Sources */,
12251253
B40F167F24784B3400CDB920 /* AuthUserTests.swift in Sources */,
12261254
B40F168224784B3400CDB920 /* AuthResendSignUpCodeTests.swift in Sources */,
@@ -1247,6 +1275,7 @@
12471275
B41D0FCB2475A3960049D08D /* Tokens+Extension.swift in Sources */,
12481276
B41D0FBF2475A3960049D08D /* AWSAuthResetPasswordOperation.swift in Sources */,
12491277
B41D0FC32475A3960049D08D /* AuthPluginErrorConstants.swift in Sources */,
1278+
21621E0C24DE1EFE00497A24 /* AWSAuthResendSignUpCodeOptions.swift in Sources */,
12501279
B41D0FD02475A3960049D08D /* AuthSignUpRequest+Validate.swift in Sources */,
12511280
B41D0FB32475A3960049D08D /* AWSAuthAttributeResendConfirmationCodeOperation.swift in Sources */,
12521281
B41D0F952475A3960049D08D /* AuthenticationProviderAdapter+Password.swift in Sources */,
@@ -1274,6 +1303,7 @@
12741303
B41D10082475AB7E0049D08D /* AWSCognitoAuthPlugin+ClientBehavior.swift in Sources */,
12751304
B41D0FA72475A3960049D08D /* SignInResult+Extension.swift in Sources */,
12761305
B41D0F922475A3960049D08D /* AuthorizationProviderBehavior.swift in Sources */,
1306+
21621E0E24DE1FC300497A24 /* AWSAttributeResendConfirmationCodeOptions.swift in Sources */,
12771307
B41D0F902475A3960049D08D /* AuthUserServiceAdapter.swift in Sources */,
12781308
B41D0FD82475A3960049D08D /* AWSMobileClientBehavior.swift in Sources */,
12791309
B41D0FCF2475A3960049D08D /* AuthResetPasswordRequest+Validate.swift in Sources */,
@@ -1285,6 +1315,7 @@
12851315
B41D0FBE2475A3960049D08D /* AWSAuthForgetDeviceOperation.swift in Sources */,
12861316
B41D0FB42475A3960049D08D /* AWSAuthFetchUserAttributeOperation.swift in Sources */,
12871317
B41D0F9E2475A3960049D08D /* AWSAuthConfirmSignUpOptions.swift in Sources */,
1318+
21621E1224DE2D6100497A24 /* AWSUpdateUserAttributeOptions.swift in Sources */,
12881319
B41D0FB22475A3960049D08D /* AWSAuthUpdateUserAttributeOperation.swift in Sources */,
12891320
B41D0FBA2475A3960049D08D /* AWSAuthSocialWebUISignInOperation.swift in Sources */,
12901321
B41D0FC42475A3960049D08D /* UserCodeDeliveryDetails+Extension.swift in Sources */,
@@ -1316,6 +1347,7 @@
13161347
B41D0F8A2475A3960049D08D /* AuthHubEventHandler.swift in Sources */,
13171348
B41D0FA22475A3960049D08D /* AWSAuthWebUISignInOptions.swift in Sources */,
13181349
B41D0FC62475A3960049D08D /* AWSMobileClient+Reset.swift in Sources */,
1350+
21621E1024DE2D5600497A24 /* AWSUpdateUserAttributesOptions.swift in Sources */,
13191351
);
13201352
runOnlyForDeploymentPostprocessing = 0;
13211353
};

AmplifyPlugins/Auth/AWSCognitoAuthPlugin/Dependency/AuthUserServiceAdapter.swift

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ class AuthUserServiceAdapter: AuthUserServiceBehavior {
4747
completionHandler: @escaping UpdateUserAttributeCompletion) {
4848

4949
let attribuetList = [request.userAttribute]
50-
updateAttributes(attributeList: attribuetList) { result in
50+
let clientMetaData = (request.options.pluginOptions as? AWSUpdateUserAttributeOptions)?.metadata ?? [:]
51+
updateAttributes(attributeList: attribuetList, clientMetaData: clientMetaData) { result in
5152
switch result {
5253
case .success(let updateAttributeResultDict):
5354
guard let updateResult = updateAttributeResultDict[request.userAttribute.key] else {
@@ -66,13 +67,20 @@ class AuthUserServiceAdapter: AuthUserServiceBehavior {
6667

6768
func updateAttributes(request: AuthUpdateUserAttributesRequest,
6869
completionHandler: @escaping UpdateUserAttributesCompletion) {
69-
updateAttributes(attributeList: request.userAttributes, completionHandler: completionHandler)
70+
let clientMetaData = (request.options.pluginOptions as? AWSUpdateUserAttributesOptions)?.metadata ?? [:]
71+
updateAttributes(attributeList: request.userAttributes,
72+
clientMetaData: clientMetaData,
73+
completionHandler: completionHandler)
7074
}
7175

7276
func resendAttributeConfirmationCode(request: AuthAttributeResendConfirmationCodeRequest,
7377
completionHandler: @escaping ResendAttributeConfirmationCodeCompletion) {
7478

75-
awsMobileClient.verifyUserAttribute(attributeName: request.attributeKey.rawValue) { result, error in
79+
let clientMetaData = (request.options.pluginOptions
80+
as? AWSAttributeResendConfirmationCodeOptions)?.metadata ?? [:]
81+
82+
awsMobileClient.verifyUserAttribute(attributeName: request.attributeKey.rawValue,
83+
clientMetaData: clientMetaData) { result, error in
7684

7785
guard error == nil else {
7886
if let awsMobileClientError = error as? AWSMobileClientError,
@@ -149,12 +157,14 @@ class AuthUserServiceAdapter: AuthUserServiceBehavior {
149157
}
150158

151159
private func updateAttributes(attributeList: [AuthUserAttribute],
160+
clientMetaData: [String: String],
152161
completionHandler: @escaping UpdateUserAttributesCompletion) {
153162

154163
let attributeMap = attributeList.reduce(into: [String: String]()) {
155164
$0[$1.key.rawValue] = $1.value
156165
}
157-
awsMobileClient.updateUserAttributes(attributeMap: attributeMap) { result, error in
166+
awsMobileClient.updateUserAttributes(attributeMap: attributeMap,
167+
clientMetaData: clientMetaData) { result, error in
158168
guard error == nil else {
159169
if let awsMobileClientError = error as? AWSMobileClientError,
160170
case .notSignedIn = awsMobileClientError {

AmplifyPlugins/Auth/AWSCognitoAuthPlugin/Dependency/AuthenticationProviderAdapter+SignIn.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ extension AuthenticationProviderAdapter {
2020
// Password can be nil, but awsmobileclient need it to have a dummy value.
2121
let password = request.password ?? ""
2222

23-
// AWSMobileClient internally uses the validationData as the clientMetaData, so passing the metaData
24-
// to the validationData here.
25-
let validationData = (request.options.pluginOptions as? AWSAuthSignInOptions)?.metadata
23+
let clientMetaData = (request.options.pluginOptions as? AWSAuthSignInOptions)?.metadata ?? [:]
24+
2625
awsMobileClient.signIn(username: username,
2726
password: password,
28-
validationData: validationData) { [weak self] result, error in
27+
validationData: nil,
28+
clientMetaData: clientMetaData) { [weak self] result, error in
2929
guard let self = self else { return }
3030

3131
guard error == nil else {

AmplifyPlugins/Auth/AWSCognitoAuthPlugin/Dependency/AuthenticationProviderAdapter+SignUp.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ extension AuthenticationProviderAdapter {
8383
func resendSignUpCode(request: AuthResendSignUpCodeRequest,
8484
completionHandler: @escaping (Result<AuthCodeDeliveryDetails, AuthError>) -> Void) {
8585

86-
awsMobileClient.resendSignUpCode(username: request.username) { result, error in
86+
let clientMetaData = (request.options.pluginOptions as? AWSAuthResendSignUpCodeOptions)?.metadata ?? [:]
87+
88+
awsMobileClient.resendSignUpCode(username: request.username, clientMetaData: clientMetaData) { result, error in
8789
guard error == nil else {
8890
let authError = AuthErrorHelper.toAuthError(error!)
8991
completionHandler(.failure(authError))
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// Copyright 2018-2020 Amazon.com,
3+
// Inc. or its affiliates. All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
10+
public struct AWSAttributeResendConfirmationCodeOptions {
11+
12+
public let metadata: [String: String]?
13+
14+
public init(metadata: [String: String]? = nil) {
15+
self.metadata = metadata
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// Copyright 2018-2020 Amazon.com,
3+
// Inc. or its affiliates. All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
10+
public struct AWSAuthResendSignUpCodeOptions {
11+
12+
public let metadata: [String: String]?
13+
14+
public init(metadata: [String: String]? = nil) {
15+
self.metadata = metadata
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// Copyright 2018-2020 Amazon.com,
3+
// Inc. or its affiliates. All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
10+
public struct AWSUpdateUserAttributeOptions {
11+
12+
public let metadata: [String: String]?
13+
14+
public init(metadata: [String: String]? = nil) {
15+
self.metadata = metadata
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// Copyright 2018-2020 Amazon.com,
3+
// Inc. or its affiliates. All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
10+
public struct AWSUpdateUserAttributesOptions {
11+
12+
public let metadata: [String: String]?
13+
14+
public init(metadata: [String: String]? = nil) {
15+
self.metadata = metadata
16+
}
17+
}

0 commit comments

Comments
 (0)