forked from lug/matterbridge
		
	Modify Send() to return also a message id
This commit is contained in:
		| @@ -66,11 +66,11 @@ func (b *Api) JoinChannel(channel config.ChannelInfo) error { | ||||
|  | ||||
| } | ||||
|  | ||||
| func (b *Api) Send(msg config.Message) error { | ||||
| func (b *Api) Send(msg config.Message) (string, error) { | ||||
| 	b.Lock() | ||||
| 	defer b.Unlock() | ||||
| 	b.Messages.Enqueue(&msg) | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Api) handlePostMessage(c echo.Context) error { | ||||
|   | ||||
| @@ -19,7 +19,7 @@ import ( | ||||
| ) | ||||
|  | ||||
| type Bridger interface { | ||||
| 	Send(msg config.Message) error | ||||
| 	Send(msg config.Message) (string, error) | ||||
| 	Connect() error | ||||
| 	JoinChannel(channel config.ChannelInfo) error | ||||
| 	Disconnect() error | ||||
|   | ||||
| @@ -108,12 +108,12 @@ func (b *bdiscord) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *bdiscord) Send(msg config.Message) error { | ||||
| func (b *bdiscord) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	channelID := b.getChannelID(msg.Channel) | ||||
| 	if channelID == "" { | ||||
| 		flog.Errorf("Could not find channelID for %v", msg.Channel) | ||||
| 		return nil | ||||
| 		return "", nil | ||||
| 	} | ||||
| 	if msg.Event == config.EVENT_USER_ACTION { | ||||
| 		msg.Text = "_" + msg.Text + "_" | ||||
| @@ -142,7 +142,7 @@ func (b *bdiscord) Send(msg config.Message) error { | ||||
| 				AvatarURL: msg.Avatar, | ||||
| 			}) | ||||
| 	} | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *bdiscord) messageUpdate(s *discordgo.Session, m *discordgo.MessageUpdate) { | ||||
|   | ||||
| @@ -97,15 +97,15 @@ func (b *Bgitter) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Bgitter) Send(msg config.Message) error { | ||||
| func (b *Bgitter) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	roomID := b.getRoomID(msg.Channel) | ||||
| 	if roomID == "" { | ||||
| 		flog.Errorf("Could not find roomID for %v", msg.Channel) | ||||
| 		return nil | ||||
| 		return "", nil | ||||
| 	} | ||||
| 	// add ZWSP because gitter echoes our own messages | ||||
| 	return b.c.SendMessage(roomID, msg.Username+msg.Text+" ") | ||||
| 	return "", b.c.SendMessage(roomID, msg.Username+msg.Text+" ") | ||||
| } | ||||
|  | ||||
| func (b *Bgitter) getRoomID(channel string) string { | ||||
|   | ||||
| @@ -127,7 +127,7 @@ func (b *Birc) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Birc) Send(msg config.Message) error { | ||||
| func (b *Birc) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	if strings.HasPrefix(msg.Text, "!") { | ||||
| 		b.Command(&msg) | ||||
| @@ -145,7 +145,7 @@ func (b *Birc) Send(msg config.Message) error { | ||||
| 			flog.Debugf("flooding, dropping message (queue at %d)", len(b.Local)) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Birc) doSend() { | ||||
|   | ||||
| @@ -74,17 +74,17 @@ func (b *Bmatrix) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func (b *Bmatrix) Send(msg config.Message) error { | ||||
| func (b *Bmatrix) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	channel := b.getRoomID(msg.Channel) | ||||
| 	flog.Debugf("Sending to channel %s", channel) | ||||
| 	if msg.Event == config.EVENT_USER_ACTION { | ||||
| 		b.mc.SendMessageEvent(channel, "m.room.message", | ||||
| 			matrix.TextMessage{"m.emote", msg.Username + msg.Text}) | ||||
| 		return nil | ||||
| 		return "", nil | ||||
| 	} | ||||
| 	b.mc.SendText(channel, msg.Username+msg.Text) | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Bmatrix) getRoomID(channel string) string { | ||||
|   | ||||
| @@ -136,7 +136,7 @@ func (b *Bmattermost) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Bmattermost) Send(msg config.Message) error { | ||||
| func (b *Bmattermost) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	if msg.Event == config.EVENT_USER_ACTION { | ||||
| 		msg.Text = "*" + msg.Text + "*" | ||||
| @@ -158,12 +158,12 @@ func (b *Bmattermost) Send(msg config.Message) error { | ||||
| 		err := b.mh.Send(matterMessage) | ||||
| 		if err != nil { | ||||
| 			flog.Info(err) | ||||
| 			return err | ||||
| 			return "", err | ||||
| 		} | ||||
| 		return nil | ||||
| 		return "", nil | ||||
| 	} | ||||
| 	b.mc.PostMessage(b.mc.GetChannelId(channel, ""), message) | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Bmattermost) handleMatter() { | ||||
|   | ||||
| @@ -57,7 +57,7 @@ func (b *Brocketchat) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Brocketchat) Send(msg config.Message) error { | ||||
| func (b *Brocketchat) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	matterMessage := matterhook.OMessage{IconURL: b.Config.IconURL} | ||||
| 	matterMessage.Channel = msg.Channel | ||||
| @@ -67,9 +67,9 @@ func (b *Brocketchat) Send(msg config.Message) error { | ||||
| 	err := b.mh.Send(matterMessage) | ||||
| 	if err != nil { | ||||
| 		flog.Info(err) | ||||
| 		return err | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Brocketchat) handleRocketHook() { | ||||
|   | ||||
| @@ -125,7 +125,7 @@ func (b *Bslack) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Bslack) Send(msg config.Message) error { | ||||
| func (b *Bslack) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	if msg.Event == config.EVENT_USER_ACTION { | ||||
| 		msg.Text = "_" + msg.Text + "_" | ||||
| @@ -145,13 +145,13 @@ func (b *Bslack) Send(msg config.Message) error { | ||||
| 		err := b.mh.Send(matterMessage) | ||||
| 		if err != nil { | ||||
| 			flog.Info(err) | ||||
| 			return err | ||||
| 			return "", err | ||||
| 		} | ||||
| 		return nil | ||||
| 		return "", nil | ||||
| 	} | ||||
| 	schannel, err := b.getChannelByName(channel) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return "", err | ||||
| 	} | ||||
| 	np := slack.NewPostMessageParameters() | ||||
| 	if b.Config.PrefixMessagesWithNick { | ||||
| @@ -170,7 +170,7 @@ func (b *Bslack) Send(msg config.Message) error { | ||||
| 	   b.rtm.SendMessage(newmsg) | ||||
| 	*/ | ||||
|  | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Bslack) getAvatar(user string) string { | ||||
|   | ||||
| @@ -69,13 +69,13 @@ func (b *Bsteam) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Bsteam) Send(msg config.Message) error { | ||||
| func (b *Bsteam) Send(msg config.Message) (string, error) { | ||||
| 	id, err := steamid.NewId(msg.Channel) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return "", err | ||||
| 	} | ||||
| 	b.c.Social.SendMessage(id, steamlang.EChatEntryType_ChatMsg, msg.Username+msg.Text) | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Bsteam) getNick(id steamid.SteamId) string { | ||||
|   | ||||
| @@ -57,11 +57,11 @@ func (b *Btelegram) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Btelegram) Send(msg config.Message) error { | ||||
| func (b *Btelegram) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	chatid, err := strconv.ParseInt(msg.Channel, 10, 64) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return "", err | ||||
| 	} | ||||
|  | ||||
| 	if b.Config.MessageFormat == "HTML" { | ||||
| @@ -72,7 +72,7 @@ func (b *Btelegram) Send(msg config.Message) error { | ||||
| 		m.ParseMode = tgbotapi.ModeHTML | ||||
| 	} | ||||
| 	_, err = b.c.Send(m) | ||||
| 	return err | ||||
| 	return "", err | ||||
| } | ||||
|  | ||||
| func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) { | ||||
|   | ||||
| @@ -79,10 +79,10 @@ func (b *Bxmpp) JoinChannel(channel config.ChannelInfo) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (b *Bxmpp) Send(msg config.Message) error { | ||||
| func (b *Bxmpp) Send(msg config.Message) (string, error) { | ||||
| 	flog.Debugf("Receiving %#v", msg) | ||||
| 	b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.Config.Muc, Text: msg.Username + msg.Text}) | ||||
| 	return nil | ||||
| 	return "", nil | ||||
| } | ||||
|  | ||||
| func (b *Bxmpp) createXMPP() (*xmpp.Client, error) { | ||||
|   | ||||
| @@ -21,6 +21,12 @@ type Gateway struct { | ||||
| 	ChannelOptions map[string]config.ChannelOptions | ||||
| 	Message        chan config.Message | ||||
| 	Name           string | ||||
| 	Messages       map[string][]*BridgeMsg | ||||
| } | ||||
|  | ||||
| type BridgeMsg struct { | ||||
| 	br *bridge.Bridge | ||||
| 	ID string | ||||
| } | ||||
|  | ||||
| func New(cfg config.Gateway, r *Router) *Gateway { | ||||
| @@ -162,7 +168,7 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) { | ||||
| 		if dest.Protocol == "api" { | ||||
| 			msg.Channel = originchannel | ||||
| 		} | ||||
| 		err := dest.Send(msg) | ||||
| 		_, err := dest.Send(msg) | ||||
| 		if err != nil { | ||||
| 			fmt.Println(err) | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Wim
					Wim