Add support for receiving attachments (keybase)

This commit is contained in:
Gonçalo Ribeiro
2019-10-20 23:28:29 +01:00
parent 00967a98ac
commit 345d535a84

View File

@@ -2,6 +2,9 @@ package bkeybase
import (
"strconv"
"io/ioutil"
"os"
"path/filepath"
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config"
@@ -66,17 +69,30 @@ func (b *Bkeybase) Send(msg config.Message) (string, error) {
// Delete message if we have an ID
// Delete message not supported by keybase go library yet
// Upload a file if it exists
// kbchat lib does not support attachments yet
// Edit message if we have an ID
// kbchat lib does not support message editing yet
// Send regular message
resp, err := b.kbc.SendMessageByTeamName(b.team, msg.Username+msg.Text, &b.channel)
if err != nil {
return "", err
}
if len(msg.Extra["file"]) > 0 {
// Upload a file
dir, err := ioutil.TempDir("", "matterbridge")
if err != nil {
return "", err
}
defer os.RemoveAll(dir)
fname := msg.Extra["file"][0].(config.FileInfo).Name
fpath := filepath.Join(dir, msg.Extra["file"][0].(config.FileInfo).Name)
if err := ioutil.WriteFile(fpath, *msg.Extra["file"][0].(config.FileInfo).Data, 0600); err != nil {
return "", err
}
return strconv.Itoa(resp.Result.MsgID), err
resp, err := b.kbc.SendAttachmentByTeam(b.team, fpath, fname, &b.channel)
return strconv.Itoa(resp.Result.MsgID), err
} else {
// Send regular message
resp, err := b.kbc.SendMessageByTeamName(b.team, msg.Username+msg.Text, &b.channel)
if err != nil {
return "", err
}
return strconv.Itoa(resp.Result.MsgID), err
}
}