mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-25 01:13:40 +01:00
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package core
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Result of the evaluation of a Service
|
|
type Result struct {
|
|
// HTTPStatus is the HTTP response status code
|
|
HTTPStatus int `json:"status"`
|
|
|
|
// DNSRCode is the response code of a DNS query in a human readable format
|
|
DNSRCode string `json:"-"`
|
|
|
|
// Hostname extracted from Service.URL
|
|
Hostname string `json:"hostname"`
|
|
|
|
// IP resolved from the Service URL
|
|
IP string `json:"-"`
|
|
|
|
// Connected whether a connection to the host was established successfully
|
|
Connected bool `json:"-"`
|
|
|
|
// Duration time that the request took
|
|
Duration time.Duration `json:"duration"`
|
|
|
|
// Errors encountered during the evaluation of the service's health
|
|
Errors []string `json:"errors"`
|
|
|
|
// ConditionResults results of the service's conditions
|
|
ConditionResults []*ConditionResult `json:"conditionResults"`
|
|
|
|
// Success whether the result signifies a success or not
|
|
Success bool `json:"success"`
|
|
|
|
// Timestamp when the request was sent
|
|
Timestamp time.Time `json:"timestamp"`
|
|
|
|
// CertificateExpiration is the duration before the certificate expires
|
|
CertificateExpiration time.Duration `json:"-"`
|
|
|
|
// body is the response body
|
|
//
|
|
// Note that this variable is only used during the evaluation of a service's health.
|
|
// This means that the call Service.EvaluateHealth both populates the body (if necessary)
|
|
// and sets it to nil after the evaluation has been completed.
|
|
body []byte
|
|
}
|
|
|
|
// AddError adds an error to the result's list of errors.
|
|
// It also ensures that there are no duplicates.
|
|
func (r *Result) AddError(error string) {
|
|
for _, resultError := range r.Errors {
|
|
if resultError == error {
|
|
// If the error already exists, don't add it
|
|
return
|
|
}
|
|
}
|
|
r.Errors = append(r.Errors, error)
|
|
}
|