Improve documentation

This commit is contained in:
TwinProduction 2020-09-26 15:15:50 -04:00
parent ac5ad9d173
commit b4b9f5c1be
6 changed files with 19 additions and 0 deletions

View File

@ -10,6 +10,8 @@ import (
"strings" "strings"
) )
// AlertProvider is the configuration necessary for sending an alert using a custom HTTP request
// Technically, all alert providers should be reachable using the custom alert provider
type AlertProvider struct { type AlertProvider struct {
Url string `yaml:"url"` Url string `yaml:"url"`
Method string `yaml:"method,omitempty"` Method string `yaml:"method,omitempty"`
@ -17,10 +19,12 @@ type AlertProvider struct {
Headers map[string]string `yaml:"headers,omitempty"` Headers map[string]string `yaml:"headers,omitempty"`
} }
// IsValid returns whether the provider's configuration is valid
func (provider *AlertProvider) IsValid() bool { func (provider *AlertProvider) IsValid() bool {
return len(provider.Url) > 0 return len(provider.Url) > 0
} }
// ToCustomAlertProvider converts the provider into a custom.AlertProvider
func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *AlertProvider { func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *AlertProvider {
return provider return provider
} }

View File

@ -6,10 +6,12 @@ import (
"github.com/TwinProduction/gatus/core" "github.com/TwinProduction/gatus/core"
) )
// AlertProvider is the configuration necessary for sending an alert using PagerDuty
type AlertProvider struct { type AlertProvider struct {
IntegrationKey string `yaml:"integration-key"` IntegrationKey string `yaml:"integration-key"`
} }
// IsValid returns whether the provider's configuration is valid
func (provider *AlertProvider) IsValid() bool { func (provider *AlertProvider) IsValid() bool {
return len(provider.IntegrationKey) == 32 return len(provider.IntegrationKey) == 32
} }

View File

@ -5,7 +5,11 @@ import (
"github.com/TwinProduction/gatus/core" "github.com/TwinProduction/gatus/core"
) )
// AlertProvider is the interface that each providers should implement
type AlertProvider interface { type AlertProvider interface {
// IsValid returns whether the provider's configuration is valid
IsValid() bool IsValid() bool
// ToCustomAlertProvider converts the provider into a custom.AlertProvider
ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider
} }

View File

@ -6,14 +6,17 @@ import (
"github.com/TwinProduction/gatus/core" "github.com/TwinProduction/gatus/core"
) )
// AlertProvider is the configuration necessary for sending an alert using Slack
type AlertProvider struct { type AlertProvider struct {
WebhookUrl string `yaml:"webhook-url"` WebhookUrl string `yaml:"webhook-url"`
} }
// IsValid returns whether the provider's configuration is valid
func (provider *AlertProvider) IsValid() bool { func (provider *AlertProvider) IsValid() bool {
return len(provider.WebhookUrl) > 0 return len(provider.WebhookUrl) > 0
} }
// ToCustomAlertProvider converts the provider into a custom.AlertProvider
func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider { func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider {
var message string var message string
var color string var color string

View File

@ -8,6 +8,7 @@ import (
"net/url" "net/url"
) )
// AlertProvider is the configuration necessary for sending an alert using Twilio
type AlertProvider struct { type AlertProvider struct {
SID string `yaml:"sid"` SID string `yaml:"sid"`
Token string `yaml:"token"` Token string `yaml:"token"`
@ -15,10 +16,12 @@ type AlertProvider struct {
To string `yaml:"to"` To string `yaml:"to"`
} }
// IsValid returns whether the provider's configuration is valid
func (provider *AlertProvider) IsValid() bool { func (provider *AlertProvider) IsValid() bool {
return len(provider.Token) > 0 && len(provider.SID) > 0 && len(provider.From) > 0 && len(provider.To) > 0 return len(provider.Token) > 0 && len(provider.SID) > 0 && len(provider.From) > 0 && len(provider.To) > 0
} }
// ToCustomAlertProvider converts the provider into a custom.AlertProvider
func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider { func (provider *AlertProvider) ToCustomAlertProvider(service *core.Service, alert *core.Alert, result *core.Result, resolved bool) *custom.AlertProvider {
var message string var message string
if resolved { if resolved {

View File

@ -12,6 +12,8 @@ import (
) )
const ( const (
// DefaultConfigurationFilePath is the default path that will be used to search for the configuration file
// if a custom path isn't configured through the GATUS_CONFIG_FILE environment variable
DefaultConfigurationFilePath = "config/config.yaml" DefaultConfigurationFilePath = "config/config.yaml"
) )
@ -22,6 +24,7 @@ var (
config *Config config *Config
) )
// Config is the main configuration structure
type Config struct { type Config struct {
Metrics bool `yaml:"metrics"` Metrics bool `yaml:"metrics"`
Debug bool `yaml:"debug"` Debug bool `yaml:"debug"`