mirror of
https://github.com/42wim/matterbridge.git
synced 2024-12-23 19:52:41 +01: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
|
||
|
}
|
||
|
|