Files
lambda/xmpp-mucuser.go

36 lines
1.0 KiB
Go
Raw Normal View History

2026-01-29 21:35:36 +00:00
package main
// Implementation of XEP-0045: Multi User Chat 7.2.2
// https://xmpp.org/extensions/xep-0045.html#enter-pres
import (
"encoding/xml"
"gosrc.io/xmpp/stanza"
)
type MucUser struct {
stanza.PresExtension
stanza.MsgExtension
2026-01-29 21:35:36 +00:00
XMLName xml.Name `xml:"http://jabber.org/protocol/muc#user x"`
MucUserItem MucUserItem `xml:"item,omitempty"`
}
type MucUserItem struct {
XMLName xml.Name
Affiliation string `xml:"affiliation,attr,omitempty"` // TODO: Use enum
Role string `xml:"role,attr,omitempty"` // TODO: Use enum
JID string `xml:"jid,attr,omitempty"`
Reason string `xml:"reason,omitempty"`
Actor Actor `xml:"actor,omitempty"`
}
type Actor struct {
JID string `xml:"jid,attr"`
Nick string `xml:"nick,attr"`
2026-01-29 21:35:36 +00:00
}
func init() {
stanza.TypeRegistry.MapExtension(stanza.PKTPresence, xml.Name{Space: "http://jabber.org/protocol/muc#user", Local: "x"}, MucUser{})
stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{Space: "http://jabber.org/protocol/muc#user", Local: "x"}, MucUser{})
2026-01-29 21:35:36 +00:00
}