fix changes xmpp lib and log error on send
This commit is contained in:
parent
006a178d13
commit
2435b9b73b
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
45
xmpp.go
45
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue