bugfixes; email parsing; send emails into matrix rooms; e2e tests

This commit is contained in:
Aine
2022-08-22 12:28:29 +03:00
parent c746c91dbb
commit e6d5e81efe
16 changed files with 428 additions and 24 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/getsentry/sentry-go"
"gitlab.com/etke.cc/go/logger"
"gitlab.com/etke.cc/linkpearl"
"gitlab.com/etke.cc/postmoogle/utils"
"maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/format"
"maunium.net/go/mautrix/id"
@@ -28,10 +29,11 @@ type Bot struct {
// New creates a new matrix bot
func New(lp *linkpearl.Linkpearl, log *logger.Logger, prefix, domain string) *Bot {
return &Bot{
prefix: prefix,
domain: domain,
log: log,
lp: lp,
roomsmu: &sync.Mutex{},
prefix: prefix,
domain: domain,
log: log,
lp: lp,
}
}
@@ -73,7 +75,7 @@ func (b *Bot) Start() error {
// Send email to matrix room
func (b *Bot) Send(from, to, subject, body string) error {
roomID, ok := b.rooms[to]
roomID, ok := b.rooms[utils.Mailbox(to)]
if !ok || roomID == "" {
return errors.New("room not found")
}

View File

@@ -33,7 +33,7 @@ func (b *Bot) parseCommand(message string) []string {
return nil
}
message = strings.Replace(message, b.prefix+" ", "", 1)
message = strings.TrimSpace(strings.Replace(message, b.prefix, "", 1))
return strings.Split(message, " ")
}

View File

@@ -58,5 +58,6 @@ func (b *Bot) getSettings(ctx context.Context, roomID id.RoomID) (*settings, err
func (b *Bot) setSettings(ctx context.Context, roomID id.RoomID, cfg *settings) error {
span := sentry.StartSpan(ctx, "http.server", sentry.TransactionName("setSettings"))
defer span.Finish()
return b.lp.GetClient().SetRoomAccountData(roomID, settingskey, cfg)
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"github.com/getsentry/sentry-go"
"gitlab.com/etke.cc/postmoogle/utils"
"maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/format"
"maunium.net/go/mautrix/id"
@@ -23,7 +24,7 @@ func (b *Bot) syncRooms(ctx context.Context) error {
for _, roomID := range resp.JoinedRooms {
cfg, serr := b.getSettings(span.Context(), roomID)
if serr != nil {
b.Error(span.Context(), roomID, "cannot get room settings: %v", err)
b.log.Warn("cannot get %s settings: %v", roomID, err)
continue
}
if cfg.Mailbox != "" {
@@ -48,8 +49,7 @@ func (b *Bot) getMailbox(ctx context.Context, evt *event.Event) {
cfg, err := b.getSettings(span.Context(), evt.RoomID)
if err != nil || cfg == nil {
b.Error(span.Context(), evt.RoomID, "cannot get settings: %v", err)
return
b.log.Warn("cannot get %s settings: %v", evt.RoomID, err)
}
if cfg.Mailbox == "" {
@@ -69,6 +69,7 @@ func (b *Bot) setMailbox(ctx context.Context, evt *event.Event, mailbox string)
span := sentry.StartSpan(ctx, "http.server", sentry.TransactionName("setMailbox"))
defer span.Finish()
mailbox = utils.Mailbox(mailbox)
existingID, ok := b.rooms[mailbox]
if ok && existingID != "" && existingID != evt.RoomID {
content := format.RenderMarkdown("Mailbox "+mailbox+"@"+b.domain+" already taken", true, true)