54 lines
898 B
Go
54 lines
898 B
Go
package alerter
|
|
|
|
import "encoding/json"
|
|
|
|
type Alerts map[string][]Alert
|
|
|
|
type Alert interface {
|
|
Message() string
|
|
ShouldIgnoreResource() bool
|
|
}
|
|
|
|
type FakeAlert struct {
|
|
Msg string
|
|
IgnoreResource bool
|
|
}
|
|
|
|
func (f *FakeAlert) Message() string {
|
|
return f.Msg
|
|
}
|
|
|
|
func (f *FakeAlert) ShouldIgnoreResource() bool {
|
|
return f.IgnoreResource
|
|
}
|
|
|
|
type SerializableAlert struct {
|
|
Alert
|
|
}
|
|
|
|
type SerializedAlert struct {
|
|
Msg string `json:"message"`
|
|
}
|
|
|
|
func (u *SerializedAlert) Message() string {
|
|
return u.Msg
|
|
}
|
|
|
|
func (u *SerializedAlert) ShouldIgnoreResource() bool {
|
|
return false
|
|
}
|
|
|
|
func (s *SerializableAlert) UnmarshalJSON(bytes []byte) error {
|
|
var res SerializedAlert
|
|
|
|
if err := json.Unmarshal(bytes, &res); err != nil {
|
|
return err
|
|
}
|
|
s.Alert = &res
|
|
return nil
|
|
}
|
|
|
|
func (s *SerializableAlert) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(SerializedAlert{Msg: s.Message()})
|
|
}
|