move handlers to handlers.go, clean up unused config options

This commit is contained in:
Cori Hudson
2019-08-24 12:11:00 -04:00
parent 2f886a826d
commit cc9a10ac20
3 changed files with 61 additions and 80 deletions

View File

@@ -87,7 +87,7 @@ type Protocol struct {
IgnoreMessages string // all protocols
Jid string // xmpp
Label string // all protocols
Login string // mattermost, matrix, keybase
Login string // mattermost, matrix
MediaDownloadBlackList []string
MediaDownloadPath string // Basically MediaServerUpload, but instead of uploading it, just write it to a file on the same server.
MediaDownloadSize int // all protocols
@@ -145,7 +145,6 @@ type Protocol struct {
VerboseJoinPart bool // IRC
WebhookBindAddress string // mattermost, slack
WebhookURL string // mattermost, slack
PaperKey string // keybase
}
type ChannelOptions struct {

View File

@@ -0,0 +1,55 @@
package bkeybase
import (
"strconv"
"github.com/42wim/matterbridge/bridge/config"
"github.com/keybase/go-keybase-chat-bot/kbchat"
)
func (b *Bkeybase) handleKeybase() {
sub, err := b.kbc.ListenForNewTextMessages()
if err != nil {
b.Log.Error("Error listening: %s", err.Error())
}
go func() {
for {
msg, err := sub.Read()
if err != nil {
b.Log.Error("failed to read message: %s", err.Error())
}
if msg.Message.Content.Type != "text" {
continue
}
if msg.Message.Sender.Username == b.kbc.GetUsername() {
continue
}
b.handleMessage(msg.Message)
}
}()
}
func (b *Bkeybase) handleMessage(msg kbchat.Message) {
b.Log.Debugf("== Receiving event: %#v", msg)
if msg.Sender.Username != b.kbc.GetUsername() {
// TODO download avatar
// Create our message
rmsg := config.Message{Username: msg.Sender.Username, Text: msg.Content.Text.Body, UserID: msg.Sender.Uid, Channel: msg.Channel.TopicName, ID: strconv.Itoa(msg.MsgID), Account: b.Account}
// Text must be a string
if msg.Content.Type != "text" {
b.Log.Errorf("message is not text")
return
}
b.Log.Debugf("<= Sending message from %s on %s to gateway", msg.Sender.Username, msg.Channel.Name)
b.Remote <- rmsg
}
}

View File

@@ -1,4 +1,4 @@
package bmatrix
package bkeybase
import (
"strconv"
@@ -16,7 +16,7 @@ type Bkeybase struct {
*bridge.Config
}
func New(cfg *bridge.Config) bridge.Bridger { // idk what this does
func New(cfg *bridge.Config) bridge.Bridger {
b := &Bkeybase{Config: cfg}
b.team = b.Config.GetString("Team")
return b
@@ -25,6 +25,8 @@ func New(cfg *bridge.Config) bridge.Bridger { // idk what this does
func (b *Bkeybase) Connect() error {
var err error
b.Log.Infof("Connecting %s", b.GetString("Team"))
// use default keybase location (`keybase`)
b.kbc, err = kbchat.Start(kbchat.RunOptions{})
if err != nil {
return err
@@ -40,9 +42,7 @@ func (b *Bkeybase) Disconnect() error {
}
func (b *Bkeybase) JoinChannel(channel config.ChannelInfo) error {
b.Lock()
b.channel = channel.Name
b.Unlock()
return nil
}
@@ -63,15 +63,7 @@ func (b *Bkeybase) Send(msg config.Message) (string, error) {
// Edit message if we have an ID
// kbchat lib does not support message editing yet
// Use notices to send join/leave events
// if msg.Event == config.EventJoinLeave {
// resp, err := b.mc.SendNotice(channel, msg.Username+msg.Text)
// if err != nil {
// return "", err
// }
// return resp.EventID, err
// }
// Send regular message
body := msg.Username + ": " + msg.Text
resp, err := b.kbc.SendMessageByTeamName(b.team, body, &b.channel)
if err != nil {
@@ -80,68 +72,3 @@ func (b *Bkeybase) Send(msg config.Message) (string, error) {
return strconv.Itoa(resp.Result.MsgID), err
}
func (b *Bkeybase) handleKeybase() {
sub, err := b.kbc.ListenForNewTextMessages()
if err != nil {
b.Log.Error("Error listening: %s", err.Error())
}
// syncer.OnEventType("m.room.redaction", b.handleEvent)
// syncer.OnEventType("m.room.message", b.handleEvent)
go func() {
for {
msg, err := sub.Read()
if err != nil {
b.Log.Error("failed to read message: %s", err.Error())
}
if msg.Message.Content.Type != "text" {
continue
}
if msg.Message.Sender.Username == b.kbc.GetUsername() {
continue
}
b.handleEvent(msg.Message)
}
}()
}
func (b *Bkeybase) handleEvent(msg kbchat.Message) {
b.Log.Debugf("== Receiving event: %#v", msg)
if msg.Sender.Username != b.kbc.GetUsername() {
// TODO download avatar
// Create our message
rmsg := config.Message{Username: msg.Sender.Username, Text: msg.Content.Text.Body, UserID: msg.Sender.Uid, Channel: msg.Channel.TopicName, ID: strconv.Itoa(msg.MsgID), Account: b.Account}
// Text must be a string
if msg.Content.Type != "text" {
b.Log.Errorf("message is not text")
return
}
// Delete event TODO
// if ev.Type == "m.room.redaction" {
// rmsg.Event = config.EventMsgDelete
// rmsg.ID = ev.Redacts
// rmsg.Text = config.EventMsgDelete
// b.Remote <- rmsg
// return
// }
// Do we have a /me action
// if ev.Content["msgtype"].(string) == "m.emote" {
// rmsg.Event = config.EventUserAction
// }
// Do we have attachments
// doesn't matter because we can't handle it yet
b.Log.Debugf("<= Sending message from %s on %s to gateway", msg.Sender.Username, msg.Channel.Name)
b.Remote <- rmsg
}
}