validation

package
v0.10.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TypeValidatorCapacity              = "ValidatorCapacity"
	TypeArticleAvailabilityAttestation = "ArticleAvailabilityAttestation"
	TypeChecksumAttestation            = "ChecksumAttestation"
	TypeValidationRequest              = "ValidationRequest"

	ValidatorCapacityBodySchema              = "gonzbnet.ValidatorCapacity/1.0"
	ArticleAvailabilityAttestationBodySchema = "gonzbnet.ArticleAvailabilityAttestation/1.0"
	ChecksumAttestationBodySchema            = "gonzbnet.ChecksumAttestation/1.0"

	StatusAvailable  = "available"
	StatusPartial    = "partial"
	StatusMissing    = "missing"
	StatusUnverified = "unverified"
	StatusSkipped    = "skipped"
	StatusFailed     = "failed"
)

Variables

This section is empty.

Functions

func ArticleAvailabilityScore

func ArticleAvailabilityScore(in ArticleAvailabilityAttestation) float64

func ChecksumScore

func ChecksumScore(in ChecksumAttestation) float64

func HashBody

func HashBody(body any) (string, error)

func ValidateArticleAvailability

func ValidateArticleAvailability(in ArticleAvailabilityAttestation, now time.Time, futureTolerance time.Duration) error

func ValidateCapacity

func ValidateCapacity(in ValidatorCapacity, now time.Time, futureTolerance time.Duration) error

func ValidateChecksum

func ValidateChecksum(in ChecksumAttestation, now time.Time, futureTolerance time.Duration) error

func ValidateRequest

func ValidateRequest(in Request, now time.Time, futureTolerance time.Duration) error

Types

type ArticleAvailabilityAttestation

type ArticleAvailabilityAttestation struct {
	SchemaVersion     string        `json:"schema_version"`
	Type              string        `json:"type"`
	ReleaseID         string        `json:"release_id"`
	ManifestID        string        `json:"manifest_id"`
	CheckedAt         string        `json:"checked_at"`
	Status            string        `json:"status"`
	ArticlesTotal     int           `json:"articles_total"`
	ArticlesAvailable int           `json:"articles_available"`
	MissingArticles   int           `json:"missing_articles"`
	ProviderScope     ProviderScope `json:"provider_scope"`
	Confidence        float64       `json:"confidence"`
	Method            string        `json:"method"`
}

type ChecksumAttestation

type ChecksumAttestation struct {
	SchemaVersion     string  `json:"schema_version"`
	Type              string  `json:"type"`
	ReleaseID         string  `json:"release_id"`
	ManifestID        string  `json:"manifest_id"`
	CheckedAt         string  `json:"checked_at"`
	Status            string  `json:"status"`
	ChecksumsTotal    int     `json:"checksums_total"`
	ChecksumsVerified int     `json:"checksums_verified"`
	ChecksumsFailed   int     `json:"checksums_failed"`
	Confidence        float64 `json:"confidence"`
	Method            string  `json:"method"`
}

type ProviderScope

type ProviderScope struct {
	ProviderBackboneHash  *string `json:"provider_backbone_hash,omitempty"`
	RetentionDaysObserved int     `json:"retention_days_observed"`
}

type Request

type Request struct {
	SchemaVersion    string `json:"schema_version"`
	Type             string `json:"type"`
	RequestID        string `json:"request_id"`
	ReleaseID        string `json:"release_id"`
	ManifestID       string `json:"manifest_id"`
	PoolID           string `json:"pool_id"`
	RequestingNodeID string `json:"requesting_node_id"`
	TargetNodeID     string `json:"target_node_id,omitempty"`
	Reason           string `json:"reason,omitempty"`
	Priority         int    `json:"priority,omitempty"`
	DueAt            string `json:"due_at,omitempty"`
	CreatedAt        string `json:"created_at"`
}

type Response

type Response struct {
	SchemaVersion string `json:"schema_version"`
	Type          string `json:"type"`
	RequestID     string `json:"request_id"`
	Status        string `json:"status"`
	Code          string `json:"code,omitempty"`
	Message       string `json:"message,omitempty"`
	Queued        bool   `json:"queued"`
}

type ValidatorCapacity

type ValidatorCapacity struct {
	SchemaVersion           string        `json:"schema_version"`
	Type                    string        `json:"type"`
	NodeID                  string        `json:"node_id"`
	PublishedAt             string        `json:"published_at"`
	MaxTasksPerHour         int           `json:"max_tasks_per_hour"`
	ArticleAvailability     bool          `json:"article_availability"`
	ChecksumValidation      bool          `json:"checksum_validation"`
	ProviderScope           ProviderScope `json:"provider_scope"`
	AcceptedManifestSchemas []string      `json:"accepted_manifest_schemas"`
	ManifestFeatures        []string      `json:"manifest_features,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL