messaging

package
v0.0.0-...-589ee3c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

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

View Source
var DependencySet = wire.NewSet(
	NewLogger,
	wire.Struct(new(Limits), "*"),
	wire.Struct(new(Sender), "*"),
)

Functions

This section is empty.

Types

type EmailMessage

type EmailMessage struct {
	Type nonblocking.MessageType
	mail.SendOptions
	// contains filtered or unexported fields
}

func (*EmailMessage) Close

func (m *EmailMessage) Close()

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 Logger

type Logger struct{ *log.Logger }

func NewLogger

func NewLogger(lf *log.Factory) Logger

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) Close

func (m *SMSMessage) Close()

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) Close

func (m *WhatsappMessage) Close()

func (*WhatsappMessage) Send

func (m *WhatsappMessage) Send(sender WhatsappSender) error

type WhatsappSender

type WhatsappSender interface {
	SendTemplate(opts *whatsapp.SendTemplateOptions) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL