Skip to content

Commit

Permalink
See changelog 2024-11-30
Browse files Browse the repository at this point in the history
  • Loading branch information
mondegor committed Nov 30, 2024
1 parent 2579078 commit 13deb21
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 37 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
### Added
- Добавлен `mail.Provider` для отправки уведомлений на электронные адреса получателей;
- Добавлен `messanger.Provider` для отправки уведомлений в мессанджеры;
- Добавлена опция отложенного старта чтения данных в `mrmailer` и `mrnotifier`;

## 2024-11-17
### Added
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Описание GoComponents v0.8.1
# Описание GoComponents v0.8.2
Этот репозиторий содержит описание библиотеки GoComponents.

## Статус библиотеки
Expand All @@ -19,7 +19,7 @@
Также основан на очереди элементов `mrqueue`;

## Подключение библиотеки
`go get -u github.com/mondegor/[email protected].1`
`go get -u github.com/mondegor/[email protected].2`

## Установка библиотеки для её локальной разработки
- Выбрать рабочую директорию, где должна быть расположена библиотека
Expand Down
4 changes: 2 additions & 2 deletions factory/mrmailer/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ const (

defaultSendProcessorCaption = "Mailer.SendProcessor"
defaultSendProcessorReadyTimeout = 60 * time.Second
defaultSendProcessorStartReadDelay = 0 * time.Second
defaultSendProcessorReadPeriod = 30 * time.Second
defaultSendProcessorBusyReadPeriod = 15 * time.Second
defaultSendProcessorCancelReadTimeout = 5 * time.Second
defaultSendProcessorHandlerTimeout = 30 * time.Second
defaultSendProcessorQueueSize = 25
Expand Down Expand Up @@ -81,8 +81,8 @@ func NewComponentService(
sendProcessor: []processconsume.Option{
processconsume.WithCaption(defaultSendProcessorCaption),
processconsume.WithReadyTimeout(defaultSendProcessorReadyTimeout),
processconsume.WithStartReadDelay(defaultSendProcessorStartReadDelay),
processconsume.WithReadPeriod(defaultSendProcessorReadPeriod),
processconsume.WithBusyReadPeriod(defaultSendProcessorBusyReadPeriod),
processconsume.WithCancelReadTimeout(defaultSendProcessorCancelReadTimeout),
processconsume.WithHandlerTimeout(defaultSendProcessorHandlerTimeout),
processconsume.WithQueueSize(defaultSendProcessorQueueSize),
Expand Down
4 changes: 2 additions & 2 deletions factory/mrnotifier/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ const (

defaultSendProcessorCaption = "Notifier.SendProcessor"
defaultSendProcessorReadyTimeout = 60 * time.Second
defaultSendProcessorStartReadDelay = 0 * time.Second
defaultSendProcessorReadPeriod = 30 * time.Second
defaultSendProcessorBusyReadPeriod = 15 * time.Second
defaultSendProcessorCancelReadTimeout = 5 * time.Second
defaultSendProcessorHandlerTimeout = 30 * time.Second
defaultSendProcessorQueueSize = 25
Expand Down Expand Up @@ -90,8 +90,8 @@ func NewComponentService(
sendProcessor: []processconsume.Option{
processconsume.WithCaption(defaultSendProcessorCaption),
processconsume.WithReadyTimeout(defaultSendProcessorReadyTimeout),
processconsume.WithStartReadDelay(defaultSendProcessorStartReadDelay),
processconsume.WithReadPeriod(defaultSendProcessorReadPeriod),
processconsume.WithBusyReadPeriod(defaultSendProcessorBusyReadPeriod),
processconsume.WithCancelReadTimeout(defaultSendProcessorCancelReadTimeout),
processconsume.WithHandlerTimeout(defaultSendProcessorHandlerTimeout),
processconsume.WithQueueSize(defaultSendProcessorQueueSize),
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ module github.com/mondegor/go-components
go 1.22.7

require (
github.com/mondegor/go-storage v0.16.3
github.com/mondegor/go-sysmess v0.13.1
github.com/mondegor/go-webcore v0.28.3
github.com/mondegor/go-storage v0.16.4
github.com/mondegor/go-sysmess v0.13.2
github.com/mondegor/go-webcore v0.28.4
github.com/stretchr/testify v1.10.0
)

Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -986,12 +986,12 @@ github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g
github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/mondegor/go-storage v0.16.3 h1:Ilg7Ls/FnB+ceuBLjpcgTkjmvjK0NuvPW8MCLVC0mpc=
github.com/mondegor/go-storage v0.16.3/go.mod h1:udHnixdaGRgn8VJi0AEWQNrlZXWdPfwJsileDasTy4g=
github.com/mondegor/go-sysmess v0.13.1 h1:5IR3R+3xBVXmMfh7+iNXfb/S2SbLqFTEQxPg2/ELXYw=
github.com/mondegor/go-sysmess v0.13.1/go.mod h1:zhY9ccMYZVZGwsz9kRlPO1jDTD3fEnoA0za2Ayd4aaI=
github.com/mondegor/go-webcore v0.28.3 h1:EwgBCuegEqxy+q+y/MCP50byiI1ep+Y06QwM7aqj1jk=
github.com/mondegor/go-webcore v0.28.3/go.mod h1:CAd6gRyj/C/fqmZT1G1L4ct6YijTKMif6EXuMPfQzBo=
github.com/mondegor/go-storage v0.16.4 h1:DZoY1qictVfIPYzV5/Xj/o7HI0rxroI0EX4577T7ZQk=
github.com/mondegor/go-storage v0.16.4/go.mod h1:sDDsxHwE+8EpRpaxYgWI0OcmM6nq2W0aa9Vc/CH91k0=
github.com/mondegor/go-sysmess v0.13.2 h1:iJMrOYF8Q6kE5SSnS/wT7A1kckjpDvGkW6tOq11Lco8=
github.com/mondegor/go-sysmess v0.13.2/go.mod h1:zhY9ccMYZVZGwsz9kRlPO1jDTD3fEnoA0za2Ayd4aaI=
github.com/mondegor/go-webcore v0.28.4 h1:AmernC567vIn0qHf0OVAREab+9oYRql6EzpWPyvpaSY=
github.com/mondegor/go-webcore v0.28.4/go.mod h1:tq2LCMAb8pEs6822NSbuJx/wSqPqOJtSfV+XHO92gsU=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
Expand Down
49 changes: 32 additions & 17 deletions mrmailer/provider/mail/mail_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package mail

import (
"context"
"net/mail"
"strings"

"github.com/mondegor/go-webcore/mrcore"
"github.com/mondegor/go-webcore/mrlog"
"github.com/mondegor/go-webcore/mrsender"
"github.com/mondegor/go-webcore/mrsender/mail"
msg "github.com/mondegor/go-webcore/mrsender/mail"

"github.com/mondegor/go-components/mrmailer/entity"
)
Expand All @@ -20,18 +21,25 @@ type (
// Provider - провайдер для отправки сообщений через заданный мессенджер.
Provider struct {
mailerAPI mrsender.MailProvider
defaultFrom string
defaultFromEmail string
}
)

// New - создаёт объект Provider.
// В переменной defaultFromEmail обязателен для заполнения
// и в ней должен находиться email (расширенный адрес не допускается).
func New(mailAPI mrsender.MailProvider, defaultFromEmail string) *Provider {
// и в ней должен находиться электронный адрес отправителя, в том числе и расширенный.
func New(mailAPI mrsender.MailProvider, defaultFromEmail string) (*Provider, error) {
addr, err := mail.ParseAddress(defaultFromEmail)
if err != nil {
return nil, mrcore.ErrInternalWithDetails.Wrap(err, "defaultFromEmail parsing failed")
}

return &Provider{
mailerAPI: mailAPI,
defaultFromEmail: defaultFromEmail,
}
defaultFrom: addr.String(),
defaultFromEmail: addr.Address,
}, nil
}

// Send - отправляет указанное сообщение.
Expand All @@ -40,33 +48,40 @@ func (p *Provider) Send(ctx context.Context, message entity.Message) error {
return mrcore.ErrUseCaseIncorrectInputData.New("message.Data.Email", "nil")
}

msg, err := mail.NewMessage(
mrlog.Ctx(ctx).
Trace().
Str("source", mailProviderName).
Int64("messageId", int64(message.ID)).
Str("channel", message.Channel).
Send()

smtpMessage, err := msg.NewMessage(
p.makeFromAddress(message.Data.Email.From),
message.Data.Email.To,
mail.WithSubject(message.Data.Email.Subject),
mail.WithReplyTo(p.makeFromAddress(message.Data.Email.ReplyTo)),
msg.WithSubject(message.Data.Email.Subject),
msg.WithReplyTo(p.makeFromAddress(message.Data.Email.ReplyTo)),
)
if err != nil {
return err
}

if err = p.mailerAPI.SendMail(ctx, msg.From(), msg.To(), msg.Header(), message.Data.Email.Content); err != nil {
err = p.mailerAPI.SendMail(
ctx,
smtpMessage.From(),
smtpMessage.To(),
smtpMessage.Header(),
message.Data.Email.Content,
)
if err != nil {
return err
}

mrlog.Ctx(ctx).
Trace().
Str("source", mailProviderName).
Int64("messageId", int64(message.ID)).
Str("channel", message.Channel).
Send()

return nil
}

func (p *Provider) makeFromAddress(value string) string {
if value == "" {
return p.defaultFromEmail
return p.defaultFrom
}

// если в строке содержится email, то возвращается строка без изменений
Expand Down
6 changes: 1 addition & 5 deletions mrmailer/provider/messenger/messenger_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,12 @@ func (p *Provider) Send(ctx context.Context, message entity.Message) error {
return mrcore.ErrUseCaseIncorrectInputData.New("message.Data.Messenger", "nil")
}

if err := p.messengerAPI.SendToChat(ctx, message.Data.Messenger.ChatID, message.Data.Messenger.Content); err != nil {
return err
}

mrlog.Ctx(ctx).
Trace().
Str("source", messengerProviderName).
Int64("messageId", int64(message.ID)).
Str("channel", message.Channel).
Send()

return nil
return p.messengerAPI.SendToChat(ctx, message.Data.Messenger.ChatID, message.Data.Messenger.Content)
}

0 comments on commit 13deb21

Please sign in to comment.