Add lark type

Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
This commit is contained in:
Somtochi Onyekwere 2021-08-25 10:17:21 +01:00
parent dc0d0daa74
commit 4893803b24
4 changed files with 43 additions and 1 deletions

View File

@ -28,7 +28,7 @@ const (
// ProviderSpec defines the desired state of Provider // ProviderSpec defines the desired state of Provider
type ProviderSpec struct { type ProviderSpec struct {
// Type of provider // Type of provider
// +kubebuilder:validation:Enum=slack;discord;msteams;rocket;generic;github;gitlab;bitbucket;azuredevops;googlechat;webex;sentry;azureeventhub;telegram // +kubebuilder:validation:Enum=slack;discord;msteams;rocket;generic;github;gitlab;bitbucket;azuredevops;googlechat;webex;sentry;azureeventhub;telegram;lark
// +required // +required
Type string `json:"type"` Type string `json:"type"`
@ -78,6 +78,7 @@ const (
SentryProvider string = "sentry" SentryProvider string = "sentry"
AzureEventHubProvider string = "azureeventhub" AzureEventHubProvider string = "azureeventhub"
TelegramProvider string = "telegram" TelegramProvider string = "telegram"
LarkProvider string = "lark"
) )
// ProviderStatus defines the observed state of Provider // ProviderStatus defines the observed state of Provider

View File

@ -88,6 +88,7 @@ spec:
- sentry - sentry
- azureeventhub - azureeventhub
- telegram - telegram
- lark
type: string type: string
username: username:
description: Bot username for this provider description: Bot username for this provider

View File

@ -79,6 +79,8 @@ func (f Factory) Notifier(provider string) (Interface, error) {
n, err = NewAzureEventHub(f.URL, f.Token, f.Channel) n, err = NewAzureEventHub(f.URL, f.Token, f.Channel)
case v1beta1.TelegramProvider: case v1beta1.TelegramProvider:
n, err = NewTelegram(f.Channel, f.Token) n, err = NewTelegram(f.Channel, f.Token)
case v1beta1.LarkProvider:
n = NewLark(f.URL)
default: default:
err = fmt.Errorf("provider %s not supported", provider) err = fmt.Errorf("provider %s not supported", provider)
} }

38
internal/notifier/lark.go Normal file
View File

@ -0,0 +1,38 @@
package notifier
import "github.com/fluxcd/pkg/runtime/events"
type Lark struct {
URL string
}
type LarkPayload struct {
MsgType string `json:"msg_type"`
Content LarkContent `json:"content"`
}
type LarkContent struct {
Text string `json:"text"`
}
func NewLark(address string) *Lark {
return &Lark{
URL: address,
}
}
func (l *Lark) Post(event events.Event) error {
// Skip any update events
if isCommitStatus(event.Metadata, "update") {
return nil
}
payload := LarkPayload{
MsgType: "text",
Content: LarkContent{
Text: event.Message,
},
}
return postMessage(l.URL, "", nil, payload)
}