Add Ad-Hoc command

This commit is contained in:
Chteufleur 2016-04-20 22:19:59 +02:00
parent e82f10fe48
commit e0e253ce4b
2 changed files with 81 additions and 0 deletions

68
src/xmpp/ad-hoc.go Normal file
View File

@ -0,0 +1,68 @@
package xmpp
import (
"encoding/xml"
)
const (
NodeAdHocCommand = "http://jabber.org/protocol/commands"
ActionAdHocExecute = "execute"
ActionAdHocNext = "next"
ActionAdHocCancel = "cancel"
StatusAdHocExecute = "execute"
StatusAdHocCompleted = "completed"
StatusAdHocCanceled = "canceled"
TypeAdHocForm = "form"
TypeAdHocResult = "result"
TypeAdHocSubmit = "submit"
TypeAdHocListSingle = "list-single"
TypeAdHocListMulti = "list-multi"
TypeAdHocNoteInfo = "info"
TypeAdHocNoteWarning = "warn"
TypeAdHocNoteError = "error"
TypeAdHocFieldListMulti = "list-multi"
TypeAdHocFieldListSingle = "list-single"
TypeAdHocFieldTextSingle = "text-single"
TypeAdHocFieldJidSingle = "jid-single"
)
type AdHocCommand struct {
XMLName xml.Name `xml:"http://jabber.org/protocol/commands command"`
Node string `xml:"node,attr"`
Action string `xml:"action,attr"`
SessionId string `xml:"sessionid,attr"`
Status string `xml:"status,attr"`
XForm AdHocXForm `xml:"x"`
Note AdHocNote `xml:"note,omitempty"`
}
type AdHocXForm struct {
XMLName xml.Name `xml:"jabber:x:data x"`
Type string `xml:"type,attr"`
Title string `xml:"title"`
Instructions string `xml:"instructions"`
Fields []AdHocField `xml:"field"`
}
type AdHocField struct {
Var string `xml:"var,attr"`
Label string `xml:"label,attr"`
Type string `xml:"type,attr"`
Options []AdHocFieldOption `xml:"option"`
Value string `xml:"value,omitempty"`
}
type AdHocFieldOption struct {
Value string `xml:"value"`
}
type AdHocNote struct {
Type string `xml:"type,attr"`
Value string `xml:",innerxml"`
}

View File

@ -15,3 +15,16 @@ func UUID4() string {
uuid[8] = (uuid[8] &^ 0x40) | 0x80 uuid[8] = (uuid[8] &^ 0x40) | 0x80
return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]) return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:])
} }
func SessionId() string {
var strSize = 15
var dictionary string
dictionary = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
var bytes = make([]byte, strSize)
rand.Read(bytes)
for k, v := range bytes {
bytes[k] = dictionary[v%byte(len(dictionary))]
}
return string(bytes)
}