package alerting import ( "encoding/base64" "fmt" "net/url" ) type TwilioAlertProvider struct { SID string `yaml:"sid"` Token string `yaml:"token"` From string `yaml:"from"` To string `yaml:"to"` } func (provider *TwilioAlertProvider) IsValid() bool { return len(provider.Token) > 0 && len(provider.SID) > 0 && len(provider.From) > 0 && len(provider.To) > 0 } func (provider *TwilioAlertProvider) ToCustomAlertProvider(message string) *CustomAlertProvider { return &CustomAlertProvider{ Url: fmt.Sprintf("https://api.twilio.com/2010-04-01/Accounts/%s/Messages.json", provider.SID), Method: "POST", Body: url.Values{ "To": {provider.To}, "From": {provider.From}, "Body": {message}, }.Encode(), Headers: map[string]string{ "Content-Type": "application/x-www-form-urlencoded", "Authorization": fmt.Sprintf("Basic %s", base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", provider.SID, provider.Token)))), }, } }