Files
2026-02-02 12:03:37 +00:00

125 lines
5.0 KiB
Swift

import Foundation
import JSONCodable
/// Identity
open class Identity: Codable {
enum CodingKeys: String, CodingKey {
case id = "$id"
case createdAt = "$createdAt"
case updatedAt = "$updatedAt"
case userId = "userId"
case provider = "provider"
case providerUid = "providerUid"
case providerEmail = "providerEmail"
case providerAccessToken = "providerAccessToken"
case providerAccessTokenExpiry = "providerAccessTokenExpiry"
case providerRefreshToken = "providerRefreshToken"
}
/// Identity ID.
public let id: String
/// Identity creation date in ISO 8601 format.
public let createdAt: String
/// Identity update date in ISO 8601 format.
public let updatedAt: String
/// User ID.
public let userId: String
/// Identity Provider.
public let provider: String
/// ID of the User in the Identity Provider.
public let providerUid: String
/// Email of the User in the Identity Provider.
public let providerEmail: String
/// Identity Provider Access Token.
public let providerAccessToken: String
/// The date of when the access token expires in ISO 8601 format.
public let providerAccessTokenExpiry: String
/// Identity Provider Refresh Token.
public let providerRefreshToken: String
init(
id: String,
createdAt: String,
updatedAt: String,
userId: String,
provider: String,
providerUid: String,
providerEmail: String,
providerAccessToken: String,
providerAccessTokenExpiry: String,
providerRefreshToken: String
) {
self.id = id
self.createdAt = createdAt
self.updatedAt = updatedAt
self.userId = userId
self.provider = provider
self.providerUid = providerUid
self.providerEmail = providerEmail
self.providerAccessToken = providerAccessToken
self.providerAccessTokenExpiry = providerAccessTokenExpiry
self.providerRefreshToken = providerRefreshToken
}
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.id = try container.decode(String.self, forKey: .id)
self.createdAt = try container.decode(String.self, forKey: .createdAt)
self.updatedAt = try container.decode(String.self, forKey: .updatedAt)
self.userId = try container.decode(String.self, forKey: .userId)
self.provider = try container.decode(String.self, forKey: .provider)
self.providerUid = try container.decode(String.self, forKey: .providerUid)
self.providerEmail = try container.decode(String.self, forKey: .providerEmail)
self.providerAccessToken = try container.decode(String.self, forKey: .providerAccessToken)
self.providerAccessTokenExpiry = try container.decode(String.self, forKey: .providerAccessTokenExpiry)
self.providerRefreshToken = try container.decode(String.self, forKey: .providerRefreshToken)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(id, forKey: .id)
try container.encode(createdAt, forKey: .createdAt)
try container.encode(updatedAt, forKey: .updatedAt)
try container.encode(userId, forKey: .userId)
try container.encode(provider, forKey: .provider)
try container.encode(providerUid, forKey: .providerUid)
try container.encode(providerEmail, forKey: .providerEmail)
try container.encode(providerAccessToken, forKey: .providerAccessToken)
try container.encode(providerAccessTokenExpiry, forKey: .providerAccessTokenExpiry)
try container.encode(providerRefreshToken, forKey: .providerRefreshToken)
}
public func toMap() -> [String: Any] {
return [
"$id": id as Any,
"$createdAt": createdAt as Any,
"$updatedAt": updatedAt as Any,
"userId": userId as Any,
"provider": provider as Any,
"providerUid": providerUid as Any,
"providerEmail": providerEmail as Any,
"providerAccessToken": providerAccessToken as Any,
"providerAccessTokenExpiry": providerAccessTokenExpiry as Any,
"providerRefreshToken": providerRefreshToken as Any
]
}
public static func from(map: [String: Any] ) -> Identity {
return Identity(
id: map["$id"] as! String,
createdAt: map["$createdAt"] as! String,
updatedAt: map["$updatedAt"] as! String,
userId: map["userId"] as! String,
provider: map["provider"] as! String,
providerUid: map["providerUid"] as! String,
providerEmail: map["providerEmail"] as! String,
providerAccessToken: map["providerAccessToken"] as! String,
providerAccessTokenExpiry: map["providerAccessTokenExpiry"] as! String,
providerRefreshToken: map["providerRefreshToken"] as! String
)
}
}