move handlers to handlers.go, clean up unused config options
This commit is contained in:
@@ -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 {
|
||||
|
||||
55
bridge/keybase/handlers.go
Normal file
55
bridge/keybase/handlers.go
Normal 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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user