51 lines
1.6 KiB
Swift
51 lines
1.6 KiB
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
import Foundation
|
|
|
|
struct InitializeFederationToIdentityPool: Action {
|
|
|
|
var identifier: String = "InitializeFederationToIdentityPool"
|
|
|
|
let federatedToken: FederatedToken
|
|
let developerProvidedIdentityId: IdentityID?
|
|
|
|
func execute(withDispatcher dispatcher: EventDispatcher, environment: Environment) async {
|
|
logVerbose("\(#fileID) Starting execution", environment: environment)
|
|
let authProviderLoginsMap = AuthProviderLoginsMap(federatedToken: federatedToken)
|
|
let event: FetchAuthSessionEvent
|
|
|
|
if let developerProvidedIdentityId = developerProvidedIdentityId {
|
|
event = FetchAuthSessionEvent.init(
|
|
eventType: .fetchAWSCredentials(
|
|
developerProvidedIdentityId,
|
|
authProviderLoginsMap))
|
|
} else {
|
|
event = FetchAuthSessionEvent.init(
|
|
eventType: .fetchAuthenticatedIdentityID(authProviderLoginsMap))
|
|
}
|
|
|
|
logVerbose("\(#fileID) Sending event \(event.type)", environment: environment)
|
|
await dispatcher.send(event)
|
|
}
|
|
}
|
|
|
|
extension InitializeFederationToIdentityPool: CustomDebugDictionaryConvertible {
|
|
var debugDictionary: [String: Any] {
|
|
[
|
|
"identifier": identifier,
|
|
"federatedToken": federatedToken.debugDictionary
|
|
]
|
|
}
|
|
}
|
|
|
|
extension InitializeFederationToIdentityPool: CustomDebugStringConvertible {
|
|
var debugDescription: String {
|
|
debugDictionary.debugDescription
|
|
}
|
|
}
|