2026-05-16 02:25:26 +08:00
|
|
|
import Foundation
|
2026-05-23 01:20:57 +08:00
|
|
|
import XuqmCoreSDK
|
2026-05-16 02:25:26 +08:00
|
|
|
|
2026-05-23 01:20:57 +08:00
|
|
|
public struct LicenseFile: Codable, Sendable {
|
|
|
|
|
public let appKey: String
|
|
|
|
|
public let appName: String?
|
|
|
|
|
public let companyName: String?
|
|
|
|
|
public let packageName: String?
|
|
|
|
|
public let iosBundleId: String?
|
|
|
|
|
public let harmonyBundleName: String?
|
|
|
|
|
public let baseUrl: String?
|
|
|
|
|
public let serverUrl: String?
|
|
|
|
|
public let issuedAt: String?
|
|
|
|
|
public let expiresAt: String?
|
|
|
|
|
|
|
|
|
|
public init(
|
|
|
|
|
appKey: String,
|
|
|
|
|
appName: String? = nil,
|
|
|
|
|
companyName: String? = nil,
|
|
|
|
|
packageName: String? = nil,
|
|
|
|
|
iosBundleId: String? = nil,
|
|
|
|
|
harmonyBundleName: String? = nil,
|
|
|
|
|
baseUrl: String? = nil,
|
|
|
|
|
serverUrl: String? = nil,
|
|
|
|
|
issuedAt: String? = nil,
|
|
|
|
|
expiresAt: String? = nil
|
|
|
|
|
) {
|
|
|
|
|
self.appKey = appKey
|
|
|
|
|
self.appName = appName
|
|
|
|
|
self.companyName = companyName
|
|
|
|
|
self.packageName = packageName
|
|
|
|
|
self.iosBundleId = iosBundleId
|
|
|
|
|
self.harmonyBundleName = harmonyBundleName
|
|
|
|
|
self.baseUrl = baseUrl
|
|
|
|
|
self.serverUrl = serverUrl
|
|
|
|
|
self.issuedAt = issuedAt
|
|
|
|
|
self.expiresAt = expiresAt
|
|
|
|
|
}
|
2026-05-16 02:25:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public struct LicenseUserInfo: Sendable {
|
|
|
|
|
public let userId: String?
|
|
|
|
|
public let name: String?
|
|
|
|
|
public let email: String?
|
|
|
|
|
public let phone: String?
|
|
|
|
|
|
|
|
|
|
public init(userId: String? = nil, name: String? = nil, email: String? = nil, phone: String? = nil) {
|
|
|
|
|
self.userId = userId
|
|
|
|
|
self.name = name
|
|
|
|
|
self.email = email
|
|
|
|
|
self.phone = phone
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum LicenseStatus: Sendable {
|
|
|
|
|
case ok
|
|
|
|
|
case denied
|
|
|
|
|
case unknown
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum LicenseResult: Sendable {
|
|
|
|
|
case success(String)
|
|
|
|
|
case error(String)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct UserInfoPayload: Encodable {
|
|
|
|
|
let userId: String?
|
|
|
|
|
let name: String?
|
|
|
|
|
let email: String?
|
|
|
|
|
let phone: String?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct RegisterRequest: Encodable {
|
|
|
|
|
let appKey: String
|
|
|
|
|
let deviceId: String
|
|
|
|
|
let deviceName: String?
|
|
|
|
|
let deviceModel: String
|
|
|
|
|
let deviceVendor: String
|
|
|
|
|
let osVersion: String
|
|
|
|
|
let userInfo: UserInfoPayload?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct VerifyRequest: Encodable {
|
|
|
|
|
let appKey: String
|
|
|
|
|
let deviceId: String
|
|
|
|
|
let token: String
|
|
|
|
|
let userInfo: UserInfoPayload?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct RegisterResponse: Decodable {
|
|
|
|
|
let success: Bool
|
|
|
|
|
let token: String?
|
|
|
|
|
let message: String?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct VerifyResponse: Decodable {
|
|
|
|
|
let valid: Bool
|
|
|
|
|
let error: String?
|
|
|
|
|
}
|