47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
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
|
|
}
|