Thumbnail

rani/matterbridge.git

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

commit 976b0f07dcf4814a8a591d6655a27383d0335094 Author: Wim <wim@42.be> Date: Tue Nov 21 23:50:27 2017 +0000 Add support for uploading images/video (matrix). Closes #302 diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go index bbf85e9..5572be5 100644 --- a/bridge/matrix/matrix.go +++ b/bridge/matrix/matrix.go @@ -17 +110 @@  package bmatrix    import ( + "bytes" + "mime"   "regexp" + "strings"   "sync"     "github.com/42wim/matterbridge/bridge/config" @@ -876 +9043 @@ func (b *Bmatrix) Send(msg config.Message) (string, error) {   matrix.TextMessage{"m.emote", msg.Username + msg.Text})   return "", nil   } + + if msg.Extra != nil { + // check if we have files to upload (from slack, telegram or mattermost) + if len(msg.Extra["file"]) > 0 { + for _, f := range msg.Extra["file"] { + fi := f.(config.FileInfo) + content := bytes.NewReader(*fi.Data) + sp := strings.Split(fi.Name, ".") + mtype := mime.TypeByExtension("." + sp[len(sp)-1]) + if strings.Contains(mtype, "image") || + strings.Contains(mtype, "video") { + flog.Debugf("uploading file: %s %s", fi.Name, mtype) + res, err := b.mc.UploadToContentRepo(content, mtype, int64(len(*fi.Data))) + if err != nil { + flog.Errorf("file upload failed: %#v", err) + } + if strings.Contains(mtype, "video") { + flog.Debugf("sendVideo %s", res.ContentURI) + _, err = b.mc.SendVideo(channel, fi.Name, res.ContentURI) + if err != nil { + flog.Errorf("sendVideo failed: %#v", err) + } + } + if strings.Contains(mtype, "image") { + flog.Debugf("sendImage %s", res.ContentURI) + _, err = b.mc.SendImage(channel, fi.Name, res.ContentURI) + if err != nil { + flog.Errorf("sendImage failed: %#v", err) + } + } + flog.Debugf("result: %#v", res) + } + } + return "", nil + } + } +   b.mc.SendText(channel, msg.Username+msg.Text)   return "", nil  }