rotund
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"gosrc.io/xmpp/stanza"
|
||||
)
|
||||
|
||||
@@ -17,6 +18,38 @@ type Bookmark struct {
|
||||
Extensions []any `xml:"extensions,omitempty"`
|
||||
}
|
||||
|
||||
func (b *Bookmark) ToNode() *stanza.Node {
|
||||
node := &stanza.Node{
|
||||
XMLName: xml.Name{Space: "urn:xmpp:bookmarks:1", Local: "conference"},
|
||||
Attrs: []xml.Attr{
|
||||
{Name: xml.Name{Local: "name"}, Value: b.Name},
|
||||
{Name: xml.Name{Local: "autojoin"}, Value: fmt.Sprintf("%t", b.Autojoin)},
|
||||
},
|
||||
}
|
||||
|
||||
if b.Nick != "" {
|
||||
node.Nodes = append(node.Nodes, stanza.Node{
|
||||
XMLName: xml.Name{Local: "nick"},
|
||||
Content: b.Nick,
|
||||
})
|
||||
}
|
||||
|
||||
if b.Password != "" {
|
||||
node.Nodes = append(node.Nodes, stanza.Node{
|
||||
XMLName: xml.Name{Local: "password"},
|
||||
Content: b.Password,
|
||||
})
|
||||
}
|
||||
|
||||
for _, ext := range b.Extensions {
|
||||
if extNode, ok := ext.(stanza.Node); ok {
|
||||
node.Nodes = append(node.Nodes, extNode)
|
||||
}
|
||||
}
|
||||
|
||||
return node
|
||||
}
|
||||
|
||||
func init() {
|
||||
stanza.TypeRegistry.MapExtension(stanza.PKTIQ, xml.Name{Space: "urn:xmpp:bookmarks:1", Local: "conference"}, Bookmark{})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user