74 lines
2.1 KiB
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
|
|
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)
|
|
}
|
|
|
|
}
|