// 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) }