Documentation ¶
Index ¶
- Constants
- Variables
- type EmailMessage
- type EventService
- type Limits
- type Logger
- type RateLimiter
- type SMSMessage
- type Sender
- func (s *Sender) PrepareEmail(email string, msgType nonblocking.MessageType) (*EmailMessage, error)
- func (s *Sender) PrepareSMS(phoneNumber string, msgType nonblocking.MessageType) (*SMSMessage, error)
- func (s *Sender) PrepareWhatsapp(phoneNumber string, msgType nonblocking.MessageType) (*WhatsappMessage, error)
- type UsageLimiter
- type WhatsappMessage
- type WhatsappSender
Constants ¶
View Source
const ( MessagingEmailPerIP ratelimit.BucketName = "MessagingEmailPerIP" MessagingEmailPerTarget ratelimit.BucketName = "MessagingEmailPerTarget" MessagingEmail ratelimit.BucketName = "MessagingEmail" MessagingSMSPerIP ratelimit.BucketName = "MessagingSMSPerIP" MessagingSMSPerTarget ratelimit.BucketName = "MessagingSMSPerTarget" MessagingSMS ratelimit.BucketName = "MessagingSMS" )
Variables ¶
Functions ¶
This section is empty.
Types ¶
type EmailMessage ¶
type EmailMessage struct { Type nonblocking.MessageType mail.SendOptions // contains filtered or unexported fields }
func (*EmailMessage) Send ¶
func (m *EmailMessage) Send() error
type EventService ¶
type EventService interface {
DispatchEventImmediately(payload event.NonBlockingPayload) error
}
type Limits ¶
type Limits struct { Logger Logger RateLimiter RateLimiter UsageLimiter UsageLimiter RemoteIP httputil.RemoteIP Config *config.MessagingRateLimitsConfig FeatureConfig *config.MessagingFeatureConfig EnvConfig *config.RateLimitsEnvironmentConfig }
type RateLimiter ¶
type RateLimiter interface { Reserve(spec ratelimit.BucketSpec) *ratelimit.Reservation Cancel(r *ratelimit.Reservation) }
type SMSMessage ¶
type SMSMessage struct { Type nonblocking.MessageType sms.SendOptions IsNotCounted bool // contains filtered or unexported fields }
func (*SMSMessage) Send ¶
func (m *SMSMessage) Send() error
type Sender ¶
type Sender struct { Limits Limits TaskQueue task.Queue Events EventService Whatsapp *whatsapp.Service MessagingFeatureConfig *config.MessagingFeatureConfig }
func (*Sender) PrepareEmail ¶
func (s *Sender) PrepareEmail(email string, msgType nonblocking.MessageType) (*EmailMessage, error)
func (*Sender) PrepareSMS ¶
func (s *Sender) PrepareSMS(phoneNumber string, msgType nonblocking.MessageType) (*SMSMessage, error)
func (*Sender) PrepareWhatsapp ¶
func (s *Sender) PrepareWhatsapp(phoneNumber string, msgType nonblocking.MessageType) (*WhatsappMessage, error)
type UsageLimiter ¶
type UsageLimiter interface { Reserve(name usage.LimitName, config *config.UsageLimitConfig) (*usage.Reservation, error) Cancel(r *usage.Reservation) }
type WhatsappMessage ¶
type WhatsappMessage struct { Type nonblocking.MessageType Options whatsapp.SendTemplateOptions IsNotCounted bool // contains filtered or unexported fields }
func (*WhatsappMessage) Send ¶
func (m *WhatsappMessage) Send(sender WhatsappSender) error
type WhatsappSender ¶
type WhatsappSender interface {
SendTemplate(opts *whatsapp.SendTemplateOptions) error
}
Click to show internal directories.
Click to hide internal directories.