import Foundation
public struct AuthToken: Hashable, Sendable {
public let id: Int
public let key: String
public let expireTime: Date
public let userId: Int
public init(id: Int, key: String, expireTime: Date, userId: Int) {
self.id = id
self.key = key
self.expireTime = expireTime
self.userId = userId
}
public var isExpired: Bool {
expireTime < Date()
}
}
public extension AuthToken {
public struct CodingData: Codable {
public struct Container: Codable {
let auth_token: AuthToken.CodingData
}
public let id: Int
public let key: String
public let expire_time: Int
public let user_id: Int
}
}
public extension AuthToken.CodingData {
public var decoded: AuthToken {
.init(
id: id,
key: key,
expireTime: Date(timeIntervalSince1970: TimeInterval(expire_time)),
userId: user_id
)
}
}
public extension AuthToken {
public var encoded: AuthToken.CodingData {
.init(
id: id,
key: key,
expire_time: Int(expireTime.timeIntervalSince1970),
user_id: userId
)
}
}