package checker import ( "encoding/json" "time" sdk "git.happydns.org/checker-sdk-go/checker" ) func Provider() sdk.ObservationProvider { return &happyDeliverProvider{} } type happyDeliverProvider struct{} func (p *happyDeliverProvider) Key() sdk.ObservationKey { return ObservationKeyHappyDeliver } func (p *happyDeliverProvider) Definition() *sdk.CheckerDefinition { return Definition() } func (p *happyDeliverProvider) ExtractMetrics(ctx sdk.ReportContext, collectedAt time.Time) ([]sdk.CheckMetric, error) { var data HappyDeliverData if err := json.Unmarshal(ctx.Data(), &data); err != nil { return nil, err } if len(data.Scores) == 0 { return nil, nil } metrics := make([]sdk.CheckMetric, 0, len(AllSections)) for _, section := range AllSections { score, ok := data.Scores[section] if !ok { continue } metrics = append(metrics, sdk.CheckMetric{ Name: "happydeliver_score", Value: float64(score), Unit: "points", Labels: map[string]string{"section": section}, Timestamp: collectedAt, }) } return metrics, nil }