Add support for receiving attachments (keybase)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user