Files
iKeyMon/Model/API/PingService.swift
2025-11-16 12:59:05 +01:00

35 lines
1.2 KiB
Swift

import Foundation
enum PingService {
static func ping(hostname: String, apiKey: String) async -> Bool {
guard let url = URL(string: "https://\(hostname)/api/v2/ping") else {
print("❌ [PingService] Invalid URL for \(hostname)")
return false
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue(apiKey, forHTTPHeaderField: "X-API-KEY")
request.timeoutInterval = 10
do {
let (data, response) = try await URLSession.shared.data(for: request)
if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode != 200 {
if let responseString = String(data: data, encoding: .utf8) {
print("❌ [PingService] HTTP \(httpResponse.statusCode): \(responseString)")
}
return false
}
if let result = try? JSONDecoder().decode([String: String].self, from: data), result["response"] == "pong" {
return true
} else {
return false
}
} catch {
print("❌ [PingService] Error pinging \(hostname): \(error)")
return false
}
}
}