48 lines
1.2 KiB
Swift
48 lines
1.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 {
|
|
|
|
struct Upgrade: Decodable {
|
|
let upgrade_type: Int
|
|
let upgrade_prompt: String
|
|
let upgrade_address: String
|
|
}
|
|
|
|
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: "http://127.0.0.1:18082/test/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)
|
|
}
|
|
|
|
}
|