diff options
Diffstat (limited to 'xmpp/extensions/extensions.go')
-rw-r--r-- | xmpp/extensions/extensions.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/xmpp/extensions/extensions.go b/xmpp/extensions/extensions.go new file mode 100644 index 0000000..ec94837 --- /dev/null +++ b/xmpp/extensions/extensions.go @@ -0,0 +1,49 @@ +package extensions + +import ( + "encoding/xml" + + "gosrc.io/xmpp/stanza" +) + +// PresenceNickExtension is from XEP-0172 +type PresenceNickExtension struct { + XMLName xml.Name `xml:"http://jabber.org/protocol/nick nick"` + Text string `xml:",chardata"` +} + +// PresenceXVCardUpdateExtension is from XEP-0153 +type PresenceXVCardUpdateExtension struct { + XMLName xml.Name `xml:"vcard-temp:x:update x"` + Photo PresenceXVCardUpdatePhoto +} + +// PresenceXVCardUpdatePhoto is from XEP-0153 +type PresenceXVCardUpdatePhoto struct { + XMLName xml.Name `xml:"photo"` + Text string `xml:",chardata"` +} + +// Namespace is a namespace! +func (c PresenceNickExtension) Namespace() string { + return c.XMLName.Space +} + +// Namespace is a namespace! +func (c PresenceXVCardUpdateExtension) Namespace() string { + return c.XMLName.Space +} + +func init() { + // presence nick + stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{ + "http://jabber.org/protocol/nick", + "nick", + }, PresenceNickExtension{}) + + // presence vcard update + stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{ + "vcard-temp:x:update", + "x", + }, PresenceXVCardUpdateExtension{}) +} |