mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2024-06-10 09:52:12 +02:00
Merge pull request #287 from strukturag/arbitrary-capabilities
Support arbitrary capabilities values.
This commit is contained in:
commit
32a2f822e0
|
@ -78,8 +78,8 @@ type CapabilitiesVersion struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CapabilitiesResponse struct {
|
type CapabilitiesResponse struct {
|
||||||
Version CapabilitiesVersion `json:"version"`
|
Version CapabilitiesVersion `json:"version"`
|
||||||
Capabilities map[string]map[string]interface{} `json:"capabilities"`
|
Capabilities map[string]*json.RawMessage `json:"capabilities"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Capabilities) getCapabilities(key string) (map[string]interface{}, bool) {
|
func (c *Capabilities) getCapabilities(key string) (map[string]interface{}, bool) {
|
||||||
|
@ -174,12 +174,18 @@ func (c *Capabilities) loadCapabilities(ctx context.Context, u *url.URL) (map[st
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
capa, found := response.Capabilities[AppNameSpreed]
|
capaObj, found := response.Capabilities[AppNameSpreed]
|
||||||
if !found {
|
if !found || capaObj == nil {
|
||||||
log.Printf("No capabilities received for app spreed from %s: %+v", capUrl.String(), response)
|
log.Printf("No capabilities received for app spreed from %s: %+v", capUrl.String(), response)
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var capa map[string]interface{}
|
||||||
|
if err := json.Unmarshal(*capaObj, &capa); err != nil {
|
||||||
|
log.Printf("Unsupported capabilities received for app spreed from %s: %+v", capUrl.String(), response)
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
log.Printf("Received capabilities %+v from %s", capa, capUrl.String())
|
log.Printf("Received capabilities %+v from %s", capa, capUrl.String())
|
||||||
c.setCapabilities(key, capa)
|
c.setCapabilities(key, capa)
|
||||||
return capa, nil
|
return capa, nil
|
||||||
|
|
|
@ -69,15 +69,18 @@ func NewCapabilitiesForTest(t *testing.T) (*url.URL, *Capabilities) {
|
||||||
config := map[string]interface{}{
|
config := map[string]interface{}{
|
||||||
"signaling": signaling,
|
"signaling": signaling,
|
||||||
}
|
}
|
||||||
|
spreedCapa, _ := json.Marshal(map[string]interface{}{
|
||||||
|
"features": features,
|
||||||
|
"config": config,
|
||||||
|
})
|
||||||
|
emptyArray := []byte("[]")
|
||||||
response := &CapabilitiesResponse{
|
response := &CapabilitiesResponse{
|
||||||
Version: CapabilitiesVersion{
|
Version: CapabilitiesVersion{
|
||||||
Major: 20,
|
Major: 20,
|
||||||
},
|
},
|
||||||
Capabilities: map[string]map[string]interface{}{
|
Capabilities: map[string]*json.RawMessage{
|
||||||
"spreed": {
|
"anotherApp": (*json.RawMessage)(&emptyArray),
|
||||||
"features": features,
|
"spreed": (*json.RawMessage)(&spreedCapa),
|
||||||
"config": config,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
hub_test.go
11
hub_test.go
|
@ -420,15 +420,16 @@ func registerBackendHandlerUrl(t *testing.T, router *mux.Router, url string) {
|
||||||
if strings.Contains(t.Name(), "MultiRoom") {
|
if strings.Contains(t.Name(), "MultiRoom") {
|
||||||
signaling[ConfigKeySessionPingLimit] = 2
|
signaling[ConfigKeySessionPingLimit] = 2
|
||||||
}
|
}
|
||||||
|
spreedCapa, _ := json.Marshal(map[string]interface{}{
|
||||||
|
"features": features,
|
||||||
|
"config": config,
|
||||||
|
})
|
||||||
response := &CapabilitiesResponse{
|
response := &CapabilitiesResponse{
|
||||||
Version: CapabilitiesVersion{
|
Version: CapabilitiesVersion{
|
||||||
Major: 20,
|
Major: 20,
|
||||||
},
|
},
|
||||||
Capabilities: map[string]map[string]interface{}{
|
Capabilities: map[string]*json.RawMessage{
|
||||||
"spreed": {
|
"spreed": (*json.RawMessage)(&spreedCapa),
|
||||||
"features": features,
|
|
||||||
"config": config,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue