Thumbnail

rani/matterbridge.git

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

commit ae95257a1358039db1dd8b58757f9208caeb8cdb Author: Asiel Díaz Benítez <adbenitez@nauta.cu> Date: Sat Mar 11 16:34:27 2023 +0000 Allow to send files in Extra via /api/message (api) (#1993) diff --git a/bridge/api/api.go b/bridge/api/api.go index 9e7679d..c0bef0e 100644 --- a/bridge/api/api.go +++ b/bridge/api/api.go @@ -16 +17 @@  package api    import ( + "encoding/base64"   "encoding/json"   "net/http"   "sync" @@ -126 +137 @@ import (   "github.com/42wim/matterbridge/bridge/config"   "github.com/labstack/echo/v4"   "github.com/labstack/echo/v4/middleware" + "github.com/mitchellh/mapstructure"   ring "github.com/zfjagann/golang-ring"  )   @@ -1376 +13915 @@ func (b *API) handlePostMessage(c echo.Context) error {   message.Account = b.Account   message.ID = ""   message.Timestamp = time.Now() + for i, f := range message.Extra["file"] { + fi := config.FileInfo{} + mapstructure.Decode(f.(map[string]interface{}), &fi) + var data []byte + // mapstructure doesn't decode base64 into []byte, so it must be done manually for fi.Data + data, _ = base64.StdEncoding.DecodeString(f.(map[string]interface{})["Data"].(string)) + fi.Data = &data + message.Extra["file"][i] = fi + }   b.Log.Debugf("Sending message from %s on %s to gateway", message.Username, "api")   b.Remote <- message   return c.JSON(http.StatusOK, message)