template-monorepo/internal/model/notification/config/config.go

80 lines
2.5 KiB
Go

package config
// ProviderMock is the dev/test email/SMS provider name.
const ProviderMock = "mock"
// Config is notification module settings (embedded in gateway root config).
type Config struct {
DefaultLocale string `json:",optional"`
Async AsyncConfig `json:",optional"`
RatePerTenant RatePerTenantConfig `json:",optional"`
Email EmailConfig `json:",optional"`
SMS SMSConfig `json:",optional"`
Push PushConfig `json:",optional"`
Webhook WebhookConfig `json:",optional"`
}
type AsyncConfig struct {
QueueRedisKey string `json:",optional"`
Worker int `json:",optional"`
MaxRetry int `json:",optional"`
BackoffSeconds []int `json:",optional"`
}
type RatePerTenantConfig struct {
Email int `json:",optional"`
SMS int `json:",optional"`
}
type EmailConfig struct {
Provider string `json:",optional"`
From string `json:",optional"`
APIKey string `json:",optional"`
SMTP SMTPProviderSettings `json:",optional"`
SES SESProviderSettings `json:",optional"`
}
// SMTPProviderSettings mirrors app-cloudep-notification-service SMTPConfig.
type SMTPProviderSettings struct {
Enable bool `json:",optional"`
Sort int `json:",optional"`
Host string `json:",optional"`
Port int `json:",optional"`
Username string `json:",optional"`
Password string `json:",optional"`
}
// SESProviderSettings mirrors app-cloudep-notification-service AmazonSesSettings.
type SESProviderSettings struct {
Enable bool `json:",optional"`
Sort int `json:",optional"`
Region string `json:",optional"`
AccessKey string `json:",optional"`
SecretKey string `json:",optional"`
SessionToken string `json:",optional"`
}
type SMSConfig struct {
Provider string `json:",optional"`
AccountSID string `json:",optional"`
AuthToken string `json:",optional"`
From string `json:",optional"`
Mitake MitakeProviderSettings `json:",optional"`
}
// MitakeProviderSettings mirrors app-cloudep-notification-service MitakeSMSSender (三竹簡訊).
type MitakeProviderSettings struct {
Enable bool `json:",optional"`
Sort int `json:",optional"`
User string `json:",optional"`
Password string `json:",optional"`
}
type PushConfig struct {
Enabled bool `json:",optional"`
}
type WebhookConfig struct {
HMACSecret string `json:",optional"`
}