36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
// This file is part of the happyDomain (R) project.
|
|
// Copyright (c) 2020-2026 happyDomain
|
|
// Authors: Pierre-Olivier Mercier, et al.
|
|
|
|
package checker
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
// Target captures everything a Collector needs to probe one logical host.
|
|
// It is built once by the orchestrator from CheckerOptions and passed to
|
|
// every Collector, so individual collectors don't have to re-parse options
|
|
// or re-resolve IPs.
|
|
type Target struct {
|
|
Host string
|
|
IPs []string
|
|
Timeout time.Duration
|
|
MaxRedirects int
|
|
UserAgent string
|
|
}
|
|
|
|
// Collector contributes a typed observation about a Target. Each collector
|
|
// owns one slice of the work (root probe, well-known endpoints, CORS
|
|
// preflight, etc.) and writes its result under Key() in the final
|
|
// payload's Extensions map.
|
|
//
|
|
// The current orchestrator wires only the root collector and writes its
|
|
// result directly under ObservationKeyHTTP for backward compatibility.
|
|
// Additional collectors are introduced in step 4; they will populate
|
|
// HTTPData.Extensions[Key()] without disturbing existing rules.
|
|
type Collector interface {
|
|
Key() string
|
|
Collect(ctx context.Context, t Target) (any, error)
|
|
}
|