zitadel/internal/notification/senders/chain.go

29 lines
725 B
Go
Raw Normal View History

package senders
import "github.com/zitadel/zitadel/internal/notification/channels"
var _ channels.NotificationChannel = (*Chain)(nil)
type Chain struct {
channels []channels.NotificationChannel
}
func chainChannels(channel ...channels.NotificationChannel) *Chain {
return &Chain{channels: channel}
}
// HandleMessage returns a non nil error from a provider immediately if any occurs
// messages are sent to channels in the same order they were provided to chainChannels()
func (c *Chain) HandleMessage(message channels.Message) error {
for i := range c.channels {
if err := c.channels[i].HandleMessage(message); err != nil {
return err
}
}
return nil
}
func (c *Chain) Len() int {
return len(c.channels)
}