diff options
author | Wim <wim@42.be> | 2018-02-27 00:33:21 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2018-02-27 23:22:12 +0100 |
commit | 2bac8673829516d8314c459133e85a8c0cc1959c (patch) | |
tree | ed4123232727f9c53c685b1687725206f0b02cb6 /bridge/slack | |
parent | 5fbd8a3be05cdecdde515ad459b7a5d87b056956 (diff) | |
download | matterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.tar.gz matterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.tar.bz2 matterbridge-msglm-2bac8673829516d8314c459133e85a8c0cc1959c.zip |
Refactor using factory
Diffstat (limited to 'bridge/slack')
-rw-r--r-- | bridge/slack/slack.go | 66 |
1 files changed, 30 insertions, 36 deletions
diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index bf2e93c2..7f506409 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -4,11 +4,11 @@ import ( "bytes" "errors" "fmt" + "github.com/42wim/matterbridge/bridge" "github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/bridge/helper" "github.com/42wim/matterbridge/matterhook" "github.com/nlopes/slack" - log "github.com/sirupsen/logrus" "html" "regexp" "strings" @@ -25,16 +25,9 @@ type Bslack struct { *config.BridgeConfig } -var flog *log.Entry -var protocol = "slack" +const messageDeleted = "message_deleted" -const messageDeleted = "messsage_deleted" - -func init() { - flog = log.WithFields(log.Fields{"prefix": protocol}) -} - -func New(cfg *config.BridgeConfig) *Bslack { +func New(cfg *config.BridgeConfig) bridge.Bridger { return &Bslack{BridgeConfig: cfg} } @@ -45,21 +38,21 @@ func (b *Bslack) Command(cmd string) string { func (b *Bslack) Connect() error { if b.Config.WebhookBindAddress != "" { if b.Config.WebhookURL != "" { - flog.Info("Connecting using webhookurl (sending) and webhookbindaddress (receiving)") + b.Log.Info("Connecting using webhookurl (sending) and webhookbindaddress (receiving)") b.mh = matterhook.New(b.Config.WebhookURL, matterhook.Config{InsecureSkipVerify: b.Config.SkipTLSVerify, BindAddress: b.Config.WebhookBindAddress}) } else if b.Config.Token != "" { - flog.Info("Connecting using token (sending)") + b.Log.Info("Connecting using token (sending)") b.sc = slack.New(b.Config.Token) b.rtm = b.sc.NewRTM() go b.rtm.ManageConnection() - flog.Info("Connecting using webhookbindaddress (receiving)") + b.Log.Info("Connecting using webhookbindaddress (receiving)") b.mh = matterhook.New(b.Config.WebhookURL, matterhook.Config{InsecureSkipVerify: b.Config.SkipTLSVerify, BindAddress: b.Config.WebhookBindAddress}) } else { - flog.Info("Connecting using webhookbindaddress (receiving)") + b.Log.Info("Connecting using webhookbindaddress (receiving)") b.mh = matterhook.New(b.Config.WebhookURL, matterhook.Config{InsecureSkipVerify: b.Config.SkipTLSVerify, BindAddress: b.Config.WebhookBindAddress}) @@ -68,19 +61,19 @@ func (b *Bslack) Connect() error { return nil } if b.Config.WebhookURL != "" { - flog.Info("Connecting using webhookurl (sending)") + b.Log.Info("Connecting using webhookurl (sending)") b.mh = matterhook.New(b.Config.WebhookURL, matterhook.Config{InsecureSkipVerify: b.Config.SkipTLSVerify, DisableServer: true}) if b.Config.Token != "" { - flog.Info("Connecting using token (receiving)") + b.Log.Info("Connecting using token (receiving)") b.sc = slack.New(b.Config.Token) b.rtm = b.sc.NewRTM() go b.rtm.ManageConnection() go b.handleSlack() } } else if b.Config.Token != "" { - flog.Info("Connecting using token (sending and receiving)") + b.Log.Info("Connecting using token (sending and receiving)") b.sc = slack.New(b.Config.Token) b.rtm = b.sc.NewRTM() go b.rtm.ManageConnection() @@ -115,7 +108,7 @@ func (b *Bslack) JoinChannel(channel config.ChannelInfo) error { } func (b *Bslack) Send(msg config.Message) (string, error) { - flog.Debugf("Receiving %#v", msg) + b.Log.Debugf("Receiving %#v", msg) // Make a action /me of the message if msg.Event == config.EVENT_USER_ACTION { @@ -197,6 +190,7 @@ func (b *Bslack) Send(msg config.Message) (string, error) { } // Post normal message + b.Log.Debugf("NP IS %#v", np) _, id, err := b.sc.PostMessage(schannel.ID, msg.Text, np) if err != nil { return "", err @@ -243,16 +237,16 @@ func (b *Bslack) getChannelByID(ID string) (*slack.Channel, error) { func (b *Bslack) handleSlack() { messages := make(chan *config.Message) if b.Config.WebhookBindAddress != "" { - flog.Debugf("Choosing webhooks based receiving") + b.Log.Debugf("Choosing webhooks based receiving") go b.handleMatterHook(messages) } else { - flog.Debugf("Choosing token based receiving") + b.Log.Debugf("Choosing token based receiving") go b.handleSlackClient(messages) } time.Sleep(time.Second) - flog.Debug("Start listening for Slack messages") + b.Log.Debug("Start listening for Slack messages") for message := range messages { - flog.Debugf("Sending message from %s on %s to gateway", message.Username, b.Account) + b.Log.Debugf("Sending message from %s on %s to gateway", message.Username, b.Account) // cleanup the message message.Text = b.replaceURL(message.Text) @@ -264,7 +258,7 @@ func (b *Bslack) handleSlack() { // Add the avatar message.Avatar = b.getAvatar(message.Username) - flog.Debugf("Message is %#v", message) + b.Log.Debugf("Message is %#v", message) b.Remote <- *message } } @@ -272,22 +266,22 @@ func (b *Bslack) handleSlack() { func (b *Bslack) handleSlackClient(messages chan *config.Message) { for msg := range b.rtm.IncomingEvents { if msg.Type != "user_typing" && msg.Type != "latency_report" { - flog.Debugf("Receiving from slackclient %#v", msg.Data) + b.Log.Debugf("Receiving from slackclient %#v", msg.Data) } switch ev := msg.Data.(type) { case *slack.MessageEvent: if b.skipMessageEvent(ev) { - flog.Debugf("Skipped message: %#v", ev) + b.Log.Debugf("Skipped message: %#v", ev) continue } rmsg, err := b.handleMessageEvent(ev) if err != nil { - flog.Errorf("%#v", err) + b.Log.Errorf("%#v", err) continue } messages <- rmsg case *slack.OutgoingErrorEvent: - flog.Debugf("%#v", ev.Error()) + b.Log.Debugf("%#v", ev.Error()) case *slack.ChannelJoinedEvent: b.Users, _ = b.sc.GetUsers() case *slack.ConnectedEvent: @@ -303,9 +297,9 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) { b.channels = append(b.channels, *channel) } case *slack.InvalidAuthEvent: - flog.Fatalf("Invalid Token %#v", ev) + b.Log.Fatalf("Invalid Token %#v", ev) case *slack.ConnectionErrorEvent: - flog.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj) + b.Log.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj) default: } } @@ -314,7 +308,7 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) { func (b *Bslack) handleMatterHook(messages chan *config.Message) { for { message := b.mh.Receive() - flog.Debugf("receiving from matterhook (slack) %#v", message) + b.Log.Debugf("receiving from matterhook (slack) %#v", message) if message.UserName == "slackbot" { continue } @@ -403,7 +397,7 @@ func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File) erro comment = results[0][1] } - err := helper.HandleDownloadSize(flog, rmsg, file.Name, int64(file.Size), b.General) + err := helper.HandleDownloadSize(b.Log, rmsg, file.Name, int64(file.Size), b.General) if err != nil { return err } @@ -413,7 +407,7 @@ func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File) erro return fmt.Errorf("download %s failed %#v", file.URLPrivateDownload, err) } // add the downloaded data to the message - helper.HandleDownloadData(flog, rmsg, file.Name, comment, file.URLPrivateDownload, data, b.General) + helper.HandleDownloadData(b.Log, rmsg, file.Name, comment, file.URLPrivateDownload, data, b.General) return nil } @@ -429,7 +423,7 @@ func (b *Bslack) handleUploadFile(msg *config.Message, channelID string) (string InitialComment: fi.Comment, }) if err != nil { - flog.Errorf("uploadfile %#v", err) + b.Log.Errorf("uploadfile %#v", err) } } return "", nil @@ -444,7 +438,7 @@ func (b *Bslack) handleMessageEvent(ev *slack.MessageEvent) (*config.Message, er // Edit message if !b.Config.EditDisable && ev.SubMessage != nil && ev.SubMessage.ThreadTimestamp != ev.SubMessage.Timestamp { - flog.Debugf("SubMessage %#v", ev.SubMessage) + b.Log.Debugf("SubMessage %#v", ev.SubMessage) ev.User = ev.SubMessage.User ev.Text = ev.SubMessage.Text + b.Config.EditSuffix } @@ -543,7 +537,7 @@ func (b *Bslack) handleMessageEvent(ev *slack.MessageEvent) (*config.Message, er if ev.File != nil { err := b.handleDownloadFile(&rmsg, ev.File) if err != nil { - flog.Errorf("download failed: %s", err) + b.Log.Errorf("download failed: %s", err) } } @@ -593,7 +587,7 @@ func (b *Bslack) sendWebhook(msg config.Message) (string, error) { } err := b.mh.Send(matterMessage) if err != nil { - flog.Error(err) + b.Log.Error(err) return "", err } return "", nil |