Skip to content

Commit f8b9885

Browse files
authored
feat(all): Configure plugins with AmplifyOutputs (#3567)
* feat: read and decode AmplifyConfigurationV2 * analytics * api * auth * geo * logging * notifications * storage * authenticator support * predictions and coreML * fixes - String to AWSAuthorizationType, AWSRegion, AmazonCognitoStandardAttributes * reconcile to latest changes * Add AWSAPIPluginGen2FunctionalTests * Revert "logging" This reverts commit 0df5c34. * consolidate README * Auth Integration tests * fix apiplugin * storage integ tests * rename and refactor AmplifyOutputs * analytics integration tests * enable more storage tests * geo integration tests * logging integration test set up * AuthHostedUIApp testing with Gen2 set up * PushNotifications tests with Gen2 set up * Add Prediction integration test README * refactor analytics options under the plugin type * auth flow type mapping * fix storage behavior - revert to previous behavior * rename oauth domain to cognito domain and add custom domain override * unit test around AmplifyOutputsData * remove authFlowType, add internal init helpers, auth unit tests * analytics unit tests * api unit tests * geo unit tests * datastore unit tests * Amplify configure tests * no changes to InternalAWSPinpoint, removing added init * fix push notifications unit tests * predictions plugin does not configure with amplify outputs * coreMLpredictions unit tests * storage unit tests * fix concurrent config unit tests * update Auth usernameAttributes and userVerificationTypes to enum * rename analytics options file * update debug description * remove unneeded mapping from amplifyconfiguration.json * add unit test for translating back to json for auth config * Update Analytics Options properties to use TimeInterval * fix naming and method signatures * auth integ test - user username as username * fix analytics tests * fix api functional test target * fix auth integ test target * fix geo integ test target * fix logging integ test target * fix notifications integ test target * fix storage integ test target * update README * update analytics options to remove autoSessionTrackingInterval * fix commented out username checking * configure if-else refactor * update recovery message * swiftlint disable nesting AmplifyOutputsData * adding reasoning and link for swiftlint message * reanble at end of file swiftlint * feat(api): Expose a constant for the API name used by Gen2 data category (#3631) * feat(api): Expose a constant for the API name used by Gen2 data category * update casing on API * add public * finalize API
1 parent adf5a2e commit f8b9885

File tree

128 files changed

+5943
-279
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+5943
-279
lines changed

Amplify/Categories/API/Internal/APICategory+CategoryConfigurable.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ extension APICategory: CategoryConfigurable {
2525
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2626
}
2727

28+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
29+
for plugin in Array(plugins.values) {
30+
try plugin.configure(using: amplifyOutputs)
31+
}
32+
isConfigured = true
33+
}
2834
}

Amplify/Categories/Analytics/Internal/AnalyticsCategory+CategoryConfigurable.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ extension AnalyticsCategory: CategoryConfigurable {
2525
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2626
}
2727

28+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
29+
for plugin in Array(plugins.values) {
30+
try plugin.configure(using: amplifyOutputs)
31+
}
32+
isConfigured = true
33+
}
2834
}

Amplify/Categories/Auth/Internal/AuthCategory+CategoryConfigurable.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,11 @@ extension AuthCategory: CategoryConfigurable {
2626
func configure(using amplifyConfiguration: AmplifyConfiguration) throws {
2727
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2828
}
29+
30+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
31+
for plugin in Array(plugins.values) {
32+
try plugin.configure(using: amplifyOutputs)
33+
}
34+
isConfigured = true
35+
}
2936
}

Amplify/Categories/DataStore/Internal/DataStoreCategory+Configurable.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ extension DataStoreCategory: CategoryConfigurable {
1515
}
1616
}
1717

18+
func configure(using amplifyConfiguration: AmplifyOutputsData) throws {
19+
try configureFirstWithEmptyConfiguration()
20+
}
21+
1822
func configure(using configuration: CategoryConfiguration?) throws {
1923
guard !isConfigured else {
2024
let error = ConfigurationError.amplifyAlreadyConfigured(

Amplify/Categories/Geo/Internal/GeoCategory+CategoryConfigurable.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ extension GeoCategory: CategoryConfigurable {
2525
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2626
}
2727

28+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
29+
for plugin in Array(plugins.values) {
30+
try plugin.configure(using: amplifyOutputs)
31+
}
32+
isConfigured = true
33+
}
2834
}

Amplify/Categories/Hub/Internal/HubCategory+CategoryConfigurable.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,19 @@ extension HubCategory: CategoryConfigurable {
2727
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2828
}
2929

30+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
31+
guard configurationState.get() != .configured else {
32+
let error = ConfigurationError.amplifyAlreadyConfigured(
33+
"\(categoryType.displayName) has already been configured.",
34+
"Remove the duplicate call to `Amplify.configure()`"
35+
)
36+
throw error
37+
}
38+
39+
for plugin in Array(plugins.values) {
40+
try plugin.configure(using: amplifyOutputs)
41+
}
42+
configurationState.set(.configured)
43+
}
44+
3045
}

Amplify/Categories/Logging/Internal/LoggingCategory+CategoryConfigurable.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,30 @@ extension LoggingCategory: CategoryConfigurable {
3939
try configure(using: categoryConfiguration(from: amplifyConfiguration))
4040
}
4141

42+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
43+
let plugin: LoggingCategoryPlugin
44+
switch configurationState {
45+
case .default:
46+
// Default plugin is already assigned, and no configuration is applicable, exit early
47+
configurationState = .configured
48+
return
49+
case .pendingConfiguration(let pendingPlugin):
50+
plugin = pendingPlugin
51+
case .configured:
52+
let error = ConfigurationError.amplifyAlreadyConfigured(
53+
"\(categoryType.displayName) has already been configured.",
54+
"Remove the duplicate call to `Amplify.configure()`"
55+
)
56+
throw error
57+
}
58+
59+
try plugin.configure(using: amplifyOutputs)
60+
self.plugins[plugin.key] = plugin
61+
62+
if plugin.key != AWSUnifiedLoggingPlugin.key, let consolePlugin = try? self.getPlugin(for: AWSUnifiedLoggingPlugin.key) {
63+
try consolePlugin.configure(using: amplifyOutputs)
64+
}
65+
66+
configurationState = .configured
67+
}
4268
}

Amplify/Categories/Notifications/PushNotifications/Internal/PushNotificationsCategory+CategoryConfigurable.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,11 @@ extension PushNotificationsCategory: CategoryConfigurable {
2323
func configure(using amplifyConfiguration: AmplifyConfiguration) throws {
2424
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2525
}
26+
27+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
28+
for plugin in Array(plugins.values) {
29+
try plugin.configure(using: amplifyOutputs)
30+
}
31+
isConfigured = true
32+
}
2633
}

Amplify/Categories/Predictions/Internal/PredictionsCategory+CategoryConfigurable.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,11 @@ extension PredictionsCategory: CategoryConfigurable {
2525
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2626
}
2727

28+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
29+
for plugin in Array(plugins.values) {
30+
try plugin.configure(using: amplifyOutputs)
31+
}
32+
isConfigured = true
33+
}
34+
2835
}

Amplify/Categories/Storage/Internal/StorageCategory+CategoryConfigurable.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ extension StorageCategory: CategoryConfigurable {
2525
try configure(using: categoryConfiguration(from: amplifyConfiguration))
2626
}
2727

28+
func configure(using amplifyOutputs: AmplifyOutputsData) throws {
29+
for plugin in Array(plugins.values) {
30+
try plugin.configure(using: amplifyOutputs)
31+
}
32+
isConfigured = true
33+
}
2834
}

0 commit comments

Comments
 (0)