mirror of
https://github.com/42wim/matterbridge
synced 2024-11-19 03:25:33 +00:00
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package wray
|
|
|
|
type Response struct {
|
|
id string
|
|
channel string
|
|
successful bool
|
|
clientId string
|
|
supportedConnectionTypes []string
|
|
messages []Message
|
|
error error
|
|
}
|
|
|
|
type Message struct {
|
|
Channel string
|
|
Id string
|
|
Data map[string]interface{}
|
|
}
|
|
|
|
func newResponse(data []interface{}) Response {
|
|
headerData := data[0].(map[string]interface{})
|
|
messagesData := data[1.:]
|
|
messages := parseMessages(messagesData)
|
|
var id string
|
|
if headerData["id"] != nil {
|
|
id = headerData["id"].(string)
|
|
}
|
|
supportedConnectionTypes := []string{}
|
|
if headerData["supportedConnectionTypes"] != nil {
|
|
d := headerData["supportedConnectionTypes"].([]interface{})
|
|
for _, sct := range(d) {
|
|
supportedConnectionTypes = append(supportedConnectionTypes, sct.(string))
|
|
}
|
|
}
|
|
var clientId string
|
|
if headerData["clientId"] != nil {
|
|
clientId = headerData["clientId"].(string)
|
|
}
|
|
return Response{id: id,
|
|
clientId: clientId,
|
|
channel: headerData["channel"].(string),
|
|
successful: headerData["successful"].(bool),
|
|
messages: messages,
|
|
supportedConnectionTypes: supportedConnectionTypes}
|
|
}
|
|
|
|
func parseMessages(data []interface{}) []Message {
|
|
messages := []Message{}
|
|
for _, messageData := range(data) {
|
|
m := messageData.(map[string]interface{})
|
|
var id string
|
|
if m["id"] != nil {
|
|
id = m["id"].(string)
|
|
}
|
|
message := Message{Channel: m["channel"].(string),
|
|
Id: id,
|
|
Data: m["data"].(map[string]interface{})}
|
|
messages = append(messages, message)
|
|
}
|
|
return messages
|
|
}
|
|
|