75 lines
2.0 KiB
Go
75 lines
2.0 KiB
Go
package messages
|
|
|
|
import (
|
|
"encoding/xml"
|
|
|
|
"dev.sum7.eu/genofire/yaja/model"
|
|
)
|
|
|
|
type XMLElement struct {
|
|
XMLName xml.Name
|
|
InnerXML string `xml:",innerxml"`
|
|
}
|
|
|
|
type Delay struct {
|
|
Stamp string `xml:"stamp,attr"`
|
|
}
|
|
|
|
type PresenceType string
|
|
|
|
const (
|
|
PresenceTypeUnavailable PresenceType = "unavailable"
|
|
PresenceTypeSubscribe PresenceType = "subscribe"
|
|
PresenceTypeSubscribed PresenceType = "subscribed"
|
|
PresenceTypeUnsubscribe PresenceType = "unsubscribe"
|
|
PresenceTypeUnsubscribed PresenceType = "unsubscribed"
|
|
PresenceTypeProbe PresenceType = "probe"
|
|
PresenceTypeError PresenceType = "error"
|
|
)
|
|
|
|
// PresenceClient element
|
|
type PresenceClient struct {
|
|
XMLName xml.Name `xml:"jabber:client presence"`
|
|
From *model.JID `xml:"from,attr,omitempty"`
|
|
ID string `xml:"id,attr,omitempty"`
|
|
To *model.JID `xml:"to,attr,omitempty"`
|
|
Type PresenceType `xml:"type,attr,omitempty"`
|
|
Lang string `xml:"lang,attr,omitempty"`
|
|
|
|
Show string `xml:"show,omitempty"` // away, chat, dnd, xa
|
|
Status string `xml:"status,omitempty"` // sb []clientText
|
|
Priority string `xml:"priority,omitempty"`
|
|
// Caps *ClientCaps `xml:"c"`
|
|
Delay *Delay `xml:"delay"`
|
|
|
|
Error *ErrorClient
|
|
}
|
|
|
|
type ChatType string
|
|
|
|
const (
|
|
ChatTypeChat ChatType = "chat"
|
|
ChatTypeGroupchat ChatType = "groupchat"
|
|
ChatTypeError ChatType = "error"
|
|
ChatTypeHeadline ChatType = "headline"
|
|
ChatTypeNormal ChatType = "normal"
|
|
)
|
|
|
|
// MessageClient element
|
|
type MessageClient struct {
|
|
XMLName xml.Name `xml:"jabber:client message"`
|
|
From *model.JID `xml:"from,attr,omitempty"`
|
|
ID string `xml:"id,attr,omitempty"`
|
|
To *model.JID `xml:"to,attr,omitempty"`
|
|
Type ChatType `xml:"type,attr,omitempty"`
|
|
Lang string `xml:"lang,attr,omitempty"`
|
|
Subject string `xml:"subject"`
|
|
Body string `xml:"body"`
|
|
Thread string `xml:"thread"`
|
|
// Any hasn't matched element
|
|
Other []XMLElement `xml:",any"`
|
|
|
|
Delay *Delay `xml:"delay"`
|
|
Error *ErrorClient
|
|
}
|