Files
whitepaper_obsero/probe/pkg/proof/format.go
T
2025-04-29 23:31:22 +02:00

53 lines
1.5 KiB
Go

package proof
import (
"encoding/json"
"os"
"git.cryptolab.re/foudre/whitepaper_obsero/pkg/geo"
"git.cryptolab.re/foudre/whitepaper_obsero/pkg/probe"
)
type Observation struct {
Timestamp string `json:"timestamp"`
Target string `json:"target"`
Status string `json:"status"`
HTTPStatus int `json:"http_status_code"`
LatencyMs int64 `json:"latency_ms"`
Error string `json:"error_message"`
Observer ObserverInfo `json:"observer"`
Version string `json:"version"`
}
type ObserverInfo struct {
Address string `json:"address"`
Country string `json:"country"`
Region string `json:"region"`
City string `json:"city"`
ProbeVersion string `json:"probe_version"`
}
func BuildProof(result probe.PingResult, loc geo.GeoInfo) Observation {
return Observation{
Timestamp: result.Timestamp,
Target: result.Target,
Status: result.Status,
HTTPStatus: result.StatusCode,
LatencyMs: result.LatencyMs,
Error: result.ErrorMsg,
Version: "0.1",
Observer: ObserverInfo{
Address: "0xABCD...1234",
Country: loc.Country,
Region: loc.Region,
City: loc.City,
ProbeVersion: "0.1",
},
}
}
func SaveProof(obs Observation, filename string) {
file, _ := json.MarshalIndent(obs, "", " ")
_ = os.WriteFile(filename, file, 0644)
}