forked from jshiffer/matterbridge
Allow to send files in Extra via /api/message (api) (#1993)
This commit is contained in:
parent
8587fa8585
commit
0917e17383
@ -1,6 +1,7 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"sync"
|
||||
@ -12,6 +13,7 @@ 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"
|
||||
)
|
||||
|
||||
@ -137,6 +139,15 @@ 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)
|
||||
|
Loading…
Reference in New Issue
Block a user