// // 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) } }