fx build fix
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package mail
|
||||
|
||||
import (
|
||||
"github.com/tech/sendico/notification/interface/api/localizer"
|
||||
mmail "github.com/tech/sendico/notification/internal/server/notificationimp/mail/messagebuilder"
|
||||
"github.com/tech/sendico/pkg/domainprovider"
|
||||
"github.com/tech/sendico/pkg/messaging"
|
||||
nn "github.com/tech/sendico/pkg/messaging/notifications/notification"
|
||||
"github.com/tech/sendico/pkg/mlogger"
|
||||
"github.com/tech/sendico/pkg/model"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type AmpliMailer struct {
|
||||
logger mlogger.Logger
|
||||
producer messaging.Producer
|
||||
client Client
|
||||
source string
|
||||
}
|
||||
|
||||
func (am *AmpliMailer) Send(m mmail.MailBuilder) error {
|
||||
err := am.client.Send(m)
|
||||
if err != nil {
|
||||
am.logger.Warn("Failed to send email", zap.Error(err))
|
||||
}
|
||||
opResult := model.OperationResult{
|
||||
IsSuccessful: err == nil,
|
||||
}
|
||||
if !opResult.IsSuccessful {
|
||||
opResult.Error = err.Error()
|
||||
}
|
||||
msg, e := m.Build()
|
||||
if e != nil {
|
||||
am.logger.Warn("Failed to build message content", zap.Error(e))
|
||||
return e
|
||||
}
|
||||
if er := am.producer.SendMessage(nn.NotificationSent(am.source, &model.NotificationResult{
|
||||
Channel: "email",
|
||||
TemplateID: msg.TemplateID(),
|
||||
Locale: msg.Locale(),
|
||||
AmpliEvent: model.AmpliEvent{
|
||||
UserID: "",
|
||||
},
|
||||
Result: opResult,
|
||||
})); er != nil {
|
||||
am.logger.Warn("Failed to send mailing result", zap.Error(er))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (am *AmpliMailer) MailBuilder() mmail.MailBuilder {
|
||||
return am.client.MailBuilder()
|
||||
}
|
||||
|
||||
func NewAmpliMailer(log mlogger.Logger, sender string, producer messaging.Producer, l localizer.Localizer, dp domainprovider.DomainProvider, config *Config) (*AmpliMailer, error) {
|
||||
logger := log.Named("ampli")
|
||||
c, err := createMailClient(logger, producer, l, dp, config)
|
||||
if err != nil {
|
||||
logger.Warn("Failed to create mailng driver", zap.Error(err), zap.String("driver", config.Driver))
|
||||
return nil, err
|
||||
}
|
||||
am := &AmpliMailer{
|
||||
logger: logger,
|
||||
client: c,
|
||||
producer: producer,
|
||||
source: sender,
|
||||
}
|
||||
am.logger.Info("Amplitude wrapper installed")
|
||||
return am, nil
|
||||
}
|
||||
Reference in New Issue
Block a user