Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 7c4c85b702cda1527a0c5a6f00dc50b312d8ebf6 Author: Joseph Crowell <joseph.w.crowell@gmail.com> Date: Sun Dec 14 14:45:12 2025 +0000 matrix: Reimplement add metadata for image messages diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go index 0f8985b..dc3134d 100644 --- a/bridge/matrix/matrix.go +++ b/bridge/matrix/matrix.go @@ -56 +57 @@ import (   "context"   "encoding/json"   "fmt" + "image"   "io"   "mime"   "net/http" @@ -136 +1412 @@ import (   "sync"   "time"   + // Initialize specific format decoders, + // see https://pkg.go.dev/image + _ "image/gif" + _ "image/jpeg" + _ "image/png" +   "github.com/matterbridge-org/matterbridge/bridge"   "github.com/matterbridge-org/matterbridge/bridge/config"   "github.com/matterbridge-org/matterbridge/bridge/helper" @@ -88216 +88929 @@ func (b *Bmatrix) handleUploadFile(msg *config.Message, roomID id.RoomID, fi *co   case strings.Contains(mtype, "image"):   b.Log.Debugf("sendImage %s", res.ContentURI)   - err = b.retry(func() error { - content := event.MessageEventContent{ - MsgType: event.MsgImage, - FileName: fi.Name, - URL: id.ContentURIString(res.ContentURI.String()), - } + cfg, format, err2 := image.DecodeConfig(bytes.NewReader(*fi.Data)) + if err2 != nil { + b.Log.WithError(err2).Errorf("Failed to decode image %s", fi.Name) + return + }   - _, err2 := b.mc.SendMessageEvent(context.TODO(), roomID, event.EventMessage, content) + b.Log.Debugf("Image format detected: %s (%dx%d)", format, cfg.Width, cfg.Height)   - return err2 + img := event.MessageEventContent{ + MsgType: event.MsgImage, + Body: fi.Name, + URL: id.ContentURIString(res.ContentURI.String()), + Info: &event.FileInfo{ + MimeType: mtype, + Size: len(*fi.Data), + Width: cfg.Width, // #nosec G115 -- go std will not returned negative size + Height: cfg.Height, // #nosec G115 -- go std will not returned negative size + }, + } + + err = b.retry(func() error { + _, err = b.mc.SendMessageEvent(context.TODO(), roomID, event.EventMessage, img) + return err   })   if err != nil {   b.Log.Errorf("sendImage failed: %#v", err)