punchnet-macos/punchnet/Networking/SDLAPIClient+User.swift

74 lines
2.1 KiB
Swift

//
// NetworkSession.swift
// punchnet
//
// Created by on 2026/3/23.
//
import Foundation
extension SDLAPIClient {
//
struct NetworkSession: Codable {
struct ExitNode: Codable {
let uuid = UUID().uuidString
let nnid: Int
let nodeName: String
enum CodingKeys: String, CodingKey {
case nnid = "node_id"
case nodeName = "node_name"
}
}
let accessToken: String
let username: String
let userType: String
let audit: Int
let networkId: Int
let networkName: String
let networkDomain: String
let exitNodes: [ExitNode]
// TODO
var networkUrl: String {
return "https://www.test.cn/id=\(self.networkId)"
}
enum CodingKeys: String, CodingKey {
case accessToken = "access_token"
case username
case userType = "user_type"
case audit
case networkId = "network_id"
case networkName = "network_name"
case networkDomain = "network_domain"
case exitNodes = "exit_node"
}
}
static func loginWithAccountAndPassword(username: String, password: String) async throws -> NetworkSession {
var params: [String: Any] = [
"username": username,
"password": password,
"system": SystemConfig.systemInfo,
"version": SystemConfig.version_name
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/auth/login", params: params, as: NetworkSession.self)
}
static func loginWithToken(token: String) async throws -> NetworkSession {
var params: [String: Any] = [
"token": token,
"system": SystemConfig.systemInfo,
"version": SystemConfig.version_name
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/auth/token", params: params, as: NetworkSession.self)
}
}