2025-10-23 17:01:36 +08:00

75 lines
2.2 KiB
Swift

//
// SDLApi.swift
// sdlan
//
// Created by on 2024/6/5.
//
import Foundation
struct JSONRPCResponse<T: Decodable>: Decodable {
let result: T?
let error: JSONRPCError?
}
struct JSONRPCError: Decodable {
let code: Int
let message: String
let data: String?
}
struct SDLAPI {
static let baseUrl: String = "https://punchnet.s5s8.com/api"
static let testBaseUrl: String = "http://127.0.0.1:19082/test"
struct Upgrade: Decodable {
let upgrade_type: Int
let upgrade_prompt: String
let upgrade_address: String
}
struct NetworkProfile: Decodable {
struct NetworkItem: Decodable {
let name: String
let code: String
}
let network: [NetworkItem]
}
static func checkVersion(clientId: String, version: Int, channel: String) async throws -> JSONRPCResponse<Upgrade> {
let params: [String:Any] = [
"client_id": clientId,
"version": version,
"channel": channel
]
let postData = try! JSONSerialization.data(withJSONObject: params)
var request = URLRequest(url: URL(string: baseUrl + "/upgrade")!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
return try JSONDecoder().decode(JSONRPCResponse<Upgrade>.self, from: data)
}
static func getUserNetworks(clientId: String) async throws -> JSONRPCResponse<NetworkProfile> {
let params: [String:Any] = [
"client_id": clientId
]
let postData = try! JSONSerialization.data(withJSONObject: params)
var request = URLRequest(url: URL(string: baseUrl + "/get_user_network")!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
return try JSONDecoder().decode(JSONRPCResponse<NetworkProfile>.self, from: data)
}
}