aboutsummaryrefslogtreecommitdiff
path: root/xmpp/extensions/extensions.go
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp/extensions/extensions.go')
-rw-r--r--xmpp/extensions/extensions.go77
1 files changed, 77 insertions, 0 deletions
diff --git a/xmpp/extensions/extensions.go b/xmpp/extensions/extensions.go
index c982581..2cf7d45 100644
--- a/xmpp/extensions/extensions.go
+++ b/xmpp/extensions/extensions.go
@@ -141,6 +141,45 @@ type FallbackSubject struct {
End string `xml:"end,attr"`
}
+// CarbonReceived is from XEP-0280
+type CarbonReceived struct {
+ XMLName xml.Name `xml:"urn:xmpp:carbons:2 received"`
+ Forwarded stanza.Forwarded `xml:"urn:xmpp:forward:0 forwarded"`
+}
+
+// CarbonSent is from XEP-0280
+type CarbonSent struct {
+ XMLName xml.Name `xml:"urn:xmpp:carbons:2 sent"`
+ Forwarded stanza.Forwarded `xml:"urn:xmpp:forward:0 forwarded"`
+}
+
+// ComponentPrivilege is from XEP-0356
+type ComponentPrivilege struct {
+ XMLName xml.Name `xml:"urn:xmpp:privilege:1 privilege"`
+ Perms []ComponentPerm `xml:"perm"`
+ Forwarded stanza.Forwarded `xml:"urn:xmpp:forward:0 forwarded"`
+}
+
+// ComponentPerm is from XEP-0356
+type ComponentPerm struct {
+ XMLName xml.Name `xml:"perm"`
+ Access string `xml:"access,attr"`
+ Type string `xml:"type,attr"`
+ Push bool `xml:"push,attr"`
+}
+
+// ClientMessage is a jabber:client NS message compatible with Prosody's XEP-0356 implementation
+type ClientMessage struct {
+ XMLName xml.Name `xml:"jabber:client message"`
+ stanza.Attrs
+
+ Subject string `xml:"subject,omitempty"`
+ Body string `xml:"body,omitempty"`
+ Thread string `xml:"thread,omitempty"`
+ Error stanza.Err `xml:"error,omitempty"`
+ Extensions []stanza.MsgExtension `xml:",omitempty"`
+}
+
// Namespace is a namespace!
func (c PresenceNickExtension) Namespace() string {
return c.XMLName.Space
@@ -171,6 +210,26 @@ func (c Fallback) Namespace() string {
return c.XMLName.Space
}
+// Namespace is a namespace!
+func (c CarbonReceived) Namespace() string {
+ return c.XMLName.Space
+}
+
+// Namespace is a namespace!
+func (c CarbonSent) Namespace() string {
+ return c.XMLName.Space
+}
+
+// Namespace is a namespace!
+func (c ComponentPrivilege) Namespace() string {
+ return c.XMLName.Space
+}
+
+// Name is a packet name
+func (ClientMessage) Name() string {
+ return "message"
+}
+
// NewReplyFallback initializes a fallback range
func NewReplyFallback(start uint64, end uint64) Fallback {
return Fallback{
@@ -214,4 +273,22 @@ func init() {
"urn:xmpp:fallback:0",
"fallback",
}, Fallback{})
+
+ // carbon received
+ stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{
+ "urn:xmpp:carbons:2",
+ "received",
+ }, CarbonReceived{})
+
+ // carbon sent
+ stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{
+ "urn:xmpp:carbons:2",
+ "sent",
+ }, CarbonSent{})
+
+ // component privilege
+ stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{
+ "urn:xmpp:privilege:1",
+ "privilege",
+ }, ComponentPrivilege{})
}