Add basic builder support
This commit is contained in:
parent
cb9016693c
commit
1dacc663d3
62
stanza/builder.go
Normal file
62
stanza/builder.go
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
package stanza
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/xml"
|
||||||
|
)
|
||||||
|
|
||||||
|
type builder struct{ lang string }
|
||||||
|
|
||||||
|
// NewBuilder create a builder structure. It act as an interface for packet generation.
|
||||||
|
// The goal is to work well with code completion to more easily.
|
||||||
|
//
|
||||||
|
// Using the builder to format and create packets is optional. You can always prepare
|
||||||
|
// your packet dealing with the struct manually and initializing them with the right values.
|
||||||
|
func NewBuilder() *builder {
|
||||||
|
return &builder{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set default language
|
||||||
|
func (b *builder) Lang(lang string) *builder {
|
||||||
|
b.lang = lang
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *builder) IQ(a Attrs) IQ {
|
||||||
|
return IQ{
|
||||||
|
XMLName: xml.Name{Local: "iq"},
|
||||||
|
Attrs: a,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *builder) Message(a Attrs) Message {
|
||||||
|
return Message{
|
||||||
|
XMLName: xml.Name{Local: "message"},
|
||||||
|
Attrs: a,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *builder) Presence(a Attrs) Presence {
|
||||||
|
return Presence{
|
||||||
|
XMLName: xml.Name{Local: "presence"},
|
||||||
|
Attrs: a,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ======================================================================================
|
||||||
|
// IQ payloads
|
||||||
|
|
||||||
|
// DiscoInfo builds a default DiscoInfo payload
|
||||||
|
func (*builder) DiscoInfo() *DiscoInfo {
|
||||||
|
d := DiscoInfo{
|
||||||
|
XMLName: xml.Name{
|
||||||
|
Space: NSDiscoInfo,
|
||||||
|
Local: "query",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return &d
|
||||||
|
}
|
||||||
|
|
||||||
|
// Identity builds a identity struct for use in Disco
|
||||||
|
func (*builder) Identity(name, category, typ string) *Identity {
|
||||||
|
return &Identity{}
|
||||||
|
}
|
Loading…
Reference in a new issue