diff --git a/runtime/xmpp.go b/runtime/xmpp.go index 53bfe85..69579c3 100644 --- a/runtime/xmpp.go +++ b/runtime/xmpp.go @@ -1,47 +1,70 @@ package runtime import ( + "github.com/bdlm/log" + "gosrc.io/xmpp" + "gosrc.io/xmpp/stanza" ) func NotifyImage(client *xmpp.Client, hook Hook, url string, desc string) { - msg := xmpp.Message{ - Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, + msg := stanza.Message{ + Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat}, Body: url, - Extensions: []xmpp.MsgExtension{ - xmpp.OOB{URL: url, Desc: desc}, + Extensions: []stanza.MsgExtension{ + stanza.OOB{URL: url, Desc: desc}, }, } for _, muc := range hook.NotifyMuc { msg.To = muc - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "muc": muc, + "url": url, + }).Errorf("error on image notify: %s", err) + } } - msg.Type = xmpp.MessageTypeChat + msg.Type = stanza.MessageTypeChat for _, user := range hook.NotifyUser { msg.To = user - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "user": user, + "url": url, + }).Errorf("error on image notify: %s", err) + } } } func Notify(client *xmpp.Client, hook Hook, text, html string) { - msg := xmpp.Message{ - Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, + msg := stanza.Message{ + Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat}, Body: text, - Extensions: []xmpp.MsgExtension{ - xmpp.HTML{Body: xmpp.HTMLBody{InnerXML: html}}, + Extensions: []stanza.MsgExtension{ + stanza.HTML{Body: stanza.HTMLBody{InnerXML: html}}, }, } for _, muc := range hook.NotifyMuc { msg.To = muc - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "muc": muc, + "text": text, + }).Errorf("error on notify: %s", err) + } } - msg.Type = xmpp.MessageTypeChat + msg.Type = stanza.MessageTypeChat for _, user := range hook.NotifyUser { msg.To = user - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "user": user, + "text": text, + }).Errorf("error on notify: %s", err) + } } } diff --git a/xmpp.go b/xmpp.go index 34c3545..29d5334 100644 --- a/xmpp.go +++ b/xmpp.go @@ -3,26 +3,37 @@ package main import ( "github.com/bdlm/log" "gosrc.io/xmpp" + "gosrc.io/xmpp/stanza" ) var client *xmpp.Client var mucs []string func notify(text string) { - msg := xmpp.Message{ - Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, + msg := stanza.Message{ + Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat}, Body: text, } for _, muc := range config.StartupNotifyMuc { msg.To = muc - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "muc": muc, + "msg": text, + }).Errorf("error on startup notify: %s", err) + } } - msg.Type = xmpp.MessageTypeChat + msg.Type = stanza.MessageTypeChat for _, user := range config.StartupNotifyUser { msg.To = user - client.Send(msg) + if err := client.Send(msg); err != nil { + log.WithFields(map[string]interface{}{ + "user": user, + "msg": text, + }).Errorf("error on startup notify: %s", err) + } } log.Infof("notify: %s", text) } @@ -38,10 +49,10 @@ func joinMUC(to, nick string) error { mucs = append(mucs, jid) - return client.Send(xmpp.Presence{Attrs: xmpp.Attrs{To: jid}, - Extensions: []xmpp.PresExtension{ - xmpp.MucPresence{ - History: xmpp.History{MaxStanzas: xmpp.NewNullableInt(0)}, + return client.Send(stanza.Presence{Attrs: stanza.Attrs{To: jid}, + Extensions: []stanza.PresExtension{ + stanza.MucPresence{ + History: stanza.History{MaxStanzas: stanza.NewNullableInt(0)}, }}, }) @@ -49,12 +60,16 @@ func joinMUC(to, nick string) error { func postStartup(c xmpp.StreamClient) { for _, muc := range config.StartupNotifyMuc { - joinMUC(muc, config.Nickname) + if err := joinMUC(muc, config.Nickname); err != nil { + log.WithField("muc", muc).Errorf("error on joining muc: %s", err) + } } for _, hooks := range config.Hooks { for _, hook := range hooks { for _, muc := range hook.NotifyMuc { - joinMUC(muc, config.Nickname) + if err := joinMUC(muc, config.Nickname); err != nil { + log.WithField("muc", muc).Errorf("error on joining muc: %s", err) + } } } } @@ -65,10 +80,12 @@ func closeXMPP() { notify("stopped of hock2xmpp") for _, muc := range mucs { - client.Send(xmpp.Presence{Attrs: xmpp.Attrs{ + if err := client.Send(stanza.Presence{Attrs: stanza.Attrs{ To: muc, - Type: xmpp.PresenceTypeUnavailable, - }}) + Type: stanza.PresenceTypeUnavailable, + }}); err != nil { + log.WithField("muc", muc).Errorf("error on leaving muc: %s", err) + } } }