46 lines
1.6 KiB
Swift
46 lines
1.6 KiB
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
import AWSPluginsCore
|
|
import Amplify
|
|
|
|
struct CredentialEnvironment: Environment, LoggerProvider {
|
|
let authConfiguration: AuthConfiguration
|
|
let credentialStoreEnvironment: CredentialStoreEnvironment
|
|
let logger: Logger
|
|
}
|
|
|
|
protocol CredentialStoreEnvironment: Environment {
|
|
typealias AmplifyAuthCredentialStoreFactory = () -> AmplifyAuthCredentialStoreBehavior
|
|
typealias KeychainStoreFactory = (_ service: String) -> KeychainStoreBehavior
|
|
|
|
var amplifyCredentialStoreFactory: AmplifyAuthCredentialStoreFactory { get }
|
|
var legacyKeychainStoreFactory: KeychainStoreFactory { get }
|
|
var eventIDFactory: EventIDFactory { get }
|
|
}
|
|
|
|
struct BasicCredentialStoreEnvironment: CredentialStoreEnvironment {
|
|
|
|
typealias AmplifyAuthCredentialStoreFactory = () -> AmplifyAuthCredentialStoreBehavior
|
|
typealias KeychainStoreFactory = (_ service: String) -> KeychainStoreBehavior
|
|
|
|
// Required
|
|
let amplifyCredentialStoreFactory: AmplifyAuthCredentialStoreFactory
|
|
let legacyKeychainStoreFactory: KeychainStoreFactory
|
|
|
|
// Optional
|
|
let eventIDFactory: EventIDFactory
|
|
|
|
init(amplifyCredentialStoreFactory: @escaping AmplifyAuthCredentialStoreFactory,
|
|
legacyKeychainStoreFactory: @escaping KeychainStoreFactory,
|
|
eventIDFactory: @escaping EventIDFactory = UUIDFactory.factory) {
|
|
self.amplifyCredentialStoreFactory = amplifyCredentialStoreFactory
|
|
self.legacyKeychainStoreFactory = legacyKeychainStoreFactory
|
|
self.eventIDFactory = eventIDFactory
|
|
}
|
|
}
|