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