53 lines
1.5 KiB
Go
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)
|
|
}
|