common

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	URISchemeUnknown = ""
	URISchemeHttp    = "http"
	URISchemeHttps   = "https"
)
View Source
const (
	URIPortUnknown = ""
	URIPortHttp    = "80"
	URIPortHttps   = "443"
)

Variables

This section is empty.

Functions

func Duration

func Duration(s string, def time.Duration) time.Duration

func ExtractDomain added in v0.2.0

func ExtractDomain(uri string) string

Helper functions for extracting the domain from URI

func Md5

func Md5(b []byte) []byte

func Md5ToString

func Md5ToString(b []byte) string

func NormalizeCountries

func NormalizeCountries(countries []string) []string

func NormalizeCountry

func NormalizeCountry(s string) string

func NormalizeCountryForMetrics added in v0.2.0

func NormalizeCountryForMetrics(country string) string

Helper function for normalizing the country

func NormalizeURI

func NormalizeURI(s string) string

func URIScheme

func URIScheme(uri string) string

Types

type Detector

type Detector interface {
	Name() string
	Schedule() string
	Start(ctx context.Context)
	Detect() error
}

type DetectorOptions

type DetectorOptions struct {
	StartTimeout int
}

type Detectors

type Detectors struct {
	// contains filtered or unexported fields
}

func NewDetectors

func NewDetectors(options *DetectorOptions, observability *Observability) *Detectors

func (*Detectors) Add

func (ds *Detectors) Add(d ...Detector)

func (*Detectors) Scheduled

func (ds *Detectors) Scheduled() bool

func (*Detectors) Start

func (ds *Detectors) Start(once, wait bool, ctx context.Context)

type Notifier

type Notifier interface {
	Name() string
	Notify(vr *VerifyResult) error
}

type NotifierConfiguration

type NotifierConfiguration struct {
	Notifier    Notifier
	Probability NotifierProbability
}

type NotifierProbability

type NotifierProbability = float64

type Notifiers

type Notifiers struct {
	// contains filtered or unexported fields
}

func NewNotifiers

func NewNotifiers(observability *Observability) *Notifiers

func (*Notifiers) Add

func (ns *Notifiers) Add(n Notifier)

func (*Notifiers) FindConfigurationByPattern

func (ns *Notifiers) FindConfigurationByPattern(pattern string) []*NotifierConfiguration

func (*Notifiers) GetDefaultConfigurations

func (ns *Notifiers) GetDefaultConfigurations() []*NotifierConfiguration

func (*Notifiers) Items

func (ns *Notifiers) Items() []Notifier

type Observability

type Observability struct {
	// contains filtered or unexported fields
}

func NewObservability

func NewObservability(logs *sre.Logs, metrics *sre.Metrics) *Observability

func (*Observability) Debug

func (o *Observability) Debug(obj interface{}, args ...interface{})

func (*Observability) Error

func (o *Observability) Error(obj interface{}, args ...interface{})

func (*Observability) Info

func (o *Observability) Info(obj interface{}, args ...interface{})

func (*Observability) Logs

func (o *Observability) Logs() *sre.Logs

func (*Observability) Metrics

func (o *Observability) Metrics() *sre.Metrics

func (*Observability) Panic added in v0.0.3

func (o *Observability) Panic(obj interface{}, args ...interface{})

Panic implements common.Logger.

func (*Observability) Warn

func (o *Observability) Warn(obj interface{}, args ...interface{})

type ObserveCountries

type ObserveCountries = map[string]*ObserveProbability

type ObserveEndpoint

type ObserveEndpoint struct {
	URI       string
	Countries ObserveCountries
	IPs       []string
	Response  *SourceEndpointResponse
}

type ObserveEndpoints

type ObserveEndpoints struct {
	// contains filtered or unexported fields
}

func (*ObserveEndpoints) Add

func (oes *ObserveEndpoints) Add(e ...*ObserveEndpoint)

func (*ObserveEndpoints) Clone

func (*ObserveEndpoints) IsEmpty

func (oes *ObserveEndpoints) IsEmpty() bool

func (*ObserveEndpoints) Items

func (oes *ObserveEndpoints) Items() []*ObserveEndpoint

func (*ObserveEndpoints) Reduce

func (oes *ObserveEndpoints) Reduce() ObserveEndpoints

type ObserveProbability

type ObserveProbability = float64

type ObserveResult

type ObserveResult struct {
	Configuration *ObserverConfiguration
	Endpoints     ObserveEndpoints
}

type Observer

type Observer interface {
	Name() string
	Observe(sr *SourceResult) (*ObserveResult, error)
}

type ObserverConfiguration

type ObserverConfiguration struct {
	Observer    Observer
	Probability ObserveProbability
}

type Observers

type Observers struct {
	// contains filtered or unexported fields
}

func NewObservers

func NewObservers(observability *Observability) *Observers

func (*Observers) Add

func (ob *Observers) Add(o Observer)

func (*Observers) FindConfigurationByPattern

func (ob *Observers) FindConfigurationByPattern(pattern string) []*ObserverConfiguration

func (*Observers) GetDefaultConfigurations

func (ob *Observers) GetDefaultConfigurations() []*ObserverConfiguration

func (*Observers) Items

func (ob *Observers) Items() []Observer

type Source

type Source interface {
	Name() string
	Start(ctx context.Context) error
	Load() (*SourceResult, error)
}

type SourceEndpoint

type SourceEndpoint struct {
	URI       string                  `json:"uri"`
	Disabled  bool                    `json:"disabled"`
	Countries []string                `json:"countries,omitempty"`
	IPs       []string                `json:"ips,omitempty"`
	Detectors []string                `json:"detectors,omitempty"`
	Response  *SourceEndpointResponse `json:"response,omitempty"`
}

func CheckSourceEndpoints

func CheckSourceEndpoints(es []*SourceEndpoint) []*SourceEndpoint

type SourceEndpointResponse

type SourceEndpointResponse struct {
	Code    string `json:"code,omitempty"`
	Content string `json:"content,omitempty"`
}

type SourceEndpoints

type SourceEndpoints struct {
	// contains filtered or unexported fields
}

func (*SourceEndpoints) Add

func (ses *SourceEndpoints) Add(e ...*SourceEndpoint)

func (*SourceEndpoints) Clone

func (*SourceEndpoints) IsEmpty

func (ses *SourceEndpoints) IsEmpty() bool

func (*SourceEndpoints) Items

func (ses *SourceEndpoints) Items() []*SourceEndpoint

func (*SourceEndpoints) Reduce

func (ses *SourceEndpoints) Reduce() SourceEndpoints

type SourceResult

type SourceResult struct {
	Endpoints SourceEndpoints
}

type Sources

type Sources struct {
	// contains filtered or unexported fields
}

func NewSources

func NewSources(observability *Observability) *Sources

func (*Sources) Add

func (ss *Sources) Add(s Source)

func (*Sources) FindByName

func (ss *Sources) FindByName(name string) Source

func (*Sources) Items

func (ss *Sources) Items() []Source

type TriggerOptions

type TriggerOptions struct {
	TTL string
}

type Triggers

type Triggers struct {
	// contains filtered or unexported fields
}

func NewTriggers

func NewTriggers(options *TriggerOptions, observability *Observability) *Triggers

func (*Triggers) Exists

func (t *Triggers) Exists(key string) bool

func (*Triggers) Update

func (t *Triggers) Update(key string, ep *VerifyEndpoint)

type URI

type URI struct {
	Scheme   string
	UserName string
	Password string
	Host     string
	Port     string
	Path     string
	Query    string
	Fragment string
}

type Verifier

type Verifier interface {
	Name() string
	Verify(or *ObserveResult) (*VerifyResult, error)
}

type VerifierConfiguration

type VerifierConfiguration struct {
	Verifier    Verifier
	Probability VerifyProbability
}

type VerifierMetrics added in v0.2.0

type VerifierMetrics struct {
	// contains filtered or unexported fields
}

func NewVerifierMetrics added in v0.2.0

func NewVerifierMetrics(metrics *sreCommon.Metrics) *VerifierMetrics

func (*VerifierMetrics) GetMetrics added in v0.2.0

func (vm *VerifierMetrics) GetMetrics() *sreCommon.Metrics

GetMetrics returns the metrics object for direct access

func (*VerifierMetrics) RecordTestErrorByType added in v0.2.1

func (vm *VerifierMetrics) RecordTestErrorByType(componentType, componentName, domain, country, errorType string, duration float64)

RecordTestErrorByType records the error with component type

func (*VerifierMetrics) RecordTestResult added in v0.2.0

func (vm *VerifierMetrics) RecordTestResult(verifier, domain, country string, probability float64, duration float64)

RecordTestResult records the result of the test with probability

func (*VerifierMetrics) RecordTestStartByType added in v0.2.1

func (vm *VerifierMetrics) RecordTestStartByType(componentType, componentName, domain, country string)

RecordTestStartByType records the start of the test with component type

func (*VerifierMetrics) RecordTestSuccessByType added in v0.2.1

func (vm *VerifierMetrics) RecordTestSuccessByType(componentType, componentName, domain, country string, duration float64)

RecordTestSuccessByType records the successful execution with component type

type Verifiers

type Verifiers struct {
	// contains filtered or unexported fields
}

func NewVerifiers

func NewVerifiers(observability *Observability) *Verifiers

func (*Verifiers) Add

func (vs *Verifiers) Add(v Verifier)

func (*Verifiers) FindConfigurationByPattern

func (vs *Verifiers) FindConfigurationByPattern(pattern string) []*VerifierConfiguration

func (*Verifiers) GetDefaultConfigurations

func (vs *Verifiers) GetDefaultConfigurations() []*VerifierConfiguration

func (*Verifiers) Items

func (vs *Verifiers) Items() []Verifier

type VerifyCountries

type VerifyCountries = map[string]*VerifyStatus

type VerifyEndpoint

type VerifyEndpoint struct {
	URI       string
	Countries VerifyCountries
}

func (*VerifyEndpoint) Ident

func (ve *VerifyEndpoint) Ident() string

type VerifyEndpoints

type VerifyEndpoints struct {
	// contains filtered or unexported fields
}

func (*VerifyEndpoints) Add

func (ves *VerifyEndpoints) Add(e ...*VerifyEndpoint)

func (*VerifyEndpoints) Clone

func (*VerifyEndpoints) IsEmpty

func (ves *VerifyEndpoints) IsEmpty() bool

func (*VerifyEndpoints) Items

func (ves *VerifyEndpoints) Items() []*VerifyEndpoint

func (*VerifyEndpoints) Reduce

func (ves *VerifyEndpoints) Reduce() VerifyEndpoints

type VerifyProbability

type VerifyProbability = float64

type VerifyResult

type VerifyResult struct {
	Configuration *VerifierConfiguration
	Endpoints     VerifyEndpoints
}

type VerifyStatus

type VerifyStatus struct {
	Probability *VerifyProbability
	Flags       VerifyStatusFlags
}

type VerifyStatusFlag

type VerifyStatusFlag = string
const (
	VerifyStatusFlagWrongIPAddress    VerifyStatusFlag = "wrong_ip_address"
	VerifyStatusFlagWrongResponseCode VerifyStatusFlag = "wrong_response_code"
)

type VerifyStatusFlags

type VerifyStatusFlags = map[VerifyStatusFlag]bool

Jump to

Keyboard shortcuts

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