45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
|
|
package handlers
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"service-operation/types"
|
|
)
|
|
|
|
func getStatusString(success bool) string {
|
|
if success {
|
|
return "up"
|
|
}
|
|
return "down"
|
|
}
|
|
|
|
func formatResultDetails(result *types.OperationResult) string {
|
|
details := map[string]interface{}{
|
|
"type": result.Type,
|
|
"response_time": result.ResponseTime,
|
|
"start_time": result.StartTime,
|
|
"end_time": result.EndTime,
|
|
}
|
|
|
|
// Add type-specific details
|
|
switch result.Type {
|
|
case types.OperationPing:
|
|
details["packets_sent"] = result.PacketsSent
|
|
details["packets_recv"] = result.PacketsRecv
|
|
details["packet_loss"] = result.PacketLoss
|
|
details["avg_rtt"] = result.AvgRTT
|
|
case types.OperationHTTP:
|
|
details["status_code"] = result.HTTPStatusCode
|
|
details["method"] = result.HTTPMethod
|
|
details["content_length"] = result.ContentLength
|
|
case types.OperationTCP:
|
|
details["tcp_connected"] = result.TCPConnected
|
|
case types.OperationDNS:
|
|
details["dns_records"] = result.DNSRecords
|
|
details["dns_type"] = result.DNSType
|
|
}
|
|
|
|
jsonData, _ := json.Marshal(details)
|
|
return string(jsonData)
|
|
} |