refac: removed 7 direct and 12 indirect go modules for custom code instead

This commit is contained in:
Florian Sylvain committed 2026-10-21 23:13:46 +02:00
1 parent cfcf108488
commit c68e9a7858
73 files changed
+2455 -428

No files matched your search

@@ -4,22 +4,47 @@ import (
domain "RenewCMS/internal/domain/mail"
"RenewCMS/internal/infrastructure/config"
"bytes"
"crypto/tls"
"embed"
"html/template"
"log"
"gopkg.in/gomail.v2"
"time"
)
type MailRepository struct {
smtp config.SmtpSettings
transport transport
sender string
now func() time.Time
}
type Option func(*options)
type options struct {
tlsConfig *tls.Config
now func() time.Time
}
func WithTLSConfig(tlsConfig *tls.Config) Option {
return func(o *options) { o.tlsConfig = tlsConfig }
}
func WithClock(now func() time.Time) Option {
return func(o *options) { o.now = now }
}
//go:embed templates/*
var mailTemplateFiles embed.FS
func NewMailRepository(smtp config.SmtpSettings) *MailRepository {
return &MailRepository{smtp: smtp}
func NewMailRepository(smtp config.SmtpSettings, opts ...Option) *MailRepository {
configured := options{now: time.Now}
for _, opt := range opts {
opt(&configured)
}
return &MailRepository{
transport: newTransport(smtp, configured.tlsConfig),
sender: smtp.Sender,
now: configured.now,
}
}
const defaultSubject = "RenewCMS | Action required"
@@ -60,28 +85,23 @@ func (m MailRepository) Render(templateName string, data any) (string, string, e
}
func (m MailRepository) Send(receiverAddress string, templateName string, data any) error {
login := m.smtp.Login
sender := m.smtp.Sender
password := m.smtp.Password
smtpHost := m.smtp.Host
smtpPort := m.smtp.Port
d := gomail.NewDialer(smtpHost, smtpPort, login, password)
subject, body, err := m.Render(templateName, data)
if err != nil {
return err
}
msg := gomail.NewMessage()
msg.SetHeaders(map[string][]string{
"From": {"RenewCMS <" + sender + ">"},
"To": {receiverAddress},
"Subject": {subject},
})
msg.SetBody("text/html", body)
msg, err := newMessage(m.sender, receiverAddress, subject, body, m.now())
if err != nil {
log.Println("error when building email:", err)
return err
}
payload, err := msg.bytes()
if err != nil {
log.Println("error when encoding email:", err)
return err
}
if err := d.DialAndSend(msg); err != nil {
if err := m.transport.deliver(msg.from.Address, msg.to.Address, payload); err != nil {
log.Println("error when sending email:", err)
return err
}