Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ae8efc2f64 | |||
| 7fe4e4b3a4 |
2 changed files with 26 additions and 2 deletions
|
|
@ -2,6 +2,9 @@ package checker
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/mail"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
|
|
@ -21,6 +24,27 @@ func (p *happyDeliverProvider) Definition() *sdk.CheckerDefinition {
|
|||
return Definition()
|
||||
}
|
||||
|
||||
// ValidateOptions runs on the host before Collect so bad options are rejected
|
||||
// up-front rather than surfacing as a runtime SMTP failure.
|
||||
func (p *happyDeliverProvider) ValidateOptions(opts sdk.CheckerOptions) error {
|
||||
raw, ok := opts["from_address"]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
s, ok := raw.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("from_address must be a string")
|
||||
}
|
||||
s = strings.TrimSpace(s)
|
||||
if s == "" {
|
||||
return nil
|
||||
}
|
||||
if _, err := mail.ParseAddress(s); err != nil {
|
||||
return fmt.Errorf("invalid from_address: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ func TestDefinitionShape(t *testing.T) {
|
|||
if def.ID != "happydeliver" {
|
||||
t.Errorf("ID = %q", def.ID)
|
||||
}
|
||||
if !def.Availability.ApplyToDomain {
|
||||
t.Error("should apply to domain")
|
||||
if !def.Availability.ApplyToService {
|
||||
t.Error("should apply to service")
|
||||
}
|
||||
if !def.HasMetrics {
|
||||
t.Error("HasMetrics should be true")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue