// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import AWSCognitoIdentityProvider import Foundation enum DeviceMetadata { case metadata(Data) case noData struct Data: Codable, Equatable { let deviceKey: String let deviceGroupKey: String let deviceSecret: String init(deviceKey: String, deviceGroupKey: String, deviceSecret: String = UUID().uuidString) { self.deviceKey = deviceKey self.deviceGroupKey = deviceGroupKey self.deviceSecret = deviceSecret } } } extension DeviceMetadata: Codable { } extension DeviceMetadata: Equatable { } extension DeviceMetadata: CustomDebugDictionaryConvertible { var debugDictionary: [String: Any] { switch self { case .noData: return ["noData": "noData"] case .metadata(let data): return [ "deviceKey": data.deviceKey.masked(interiorCount: 5), "deviceGroupKey": data.deviceGroupKey.masked(interiorCount: 5), "deviceSecret": data.deviceSecret.masked(interiorCount: 5) ] } } } extension DeviceMetadata: CustomDebugStringConvertible { var debugDescription: String { debugDictionary.debugDescription } } extension CognitoIdentityProviderClientTypes.AuthenticationResultType { var deviceMetadata: DeviceMetadata { if let newDeviceMetadata = newDeviceMetadata, let deviceKey = newDeviceMetadata.deviceKey, let deviceGroupKey = newDeviceMetadata.deviceGroupKey { let data = DeviceMetadata.Data( deviceKey: deviceKey, deviceGroupKey: deviceGroupKey) return .metadata(data) } return .noData } }