This commit is contained in:
2026-08-16 20:07:53 +01:00
parent eebb6906c6
commit 58ae55e061
16 changed files with 369 additions and 171 deletions
+33
View File
@@ -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{})
}