diff options
author | Simon Eisenmann <simon@longsleep.org> | 2017-10-16 17:11:03 +0200 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-10-16 16:11:03 +0100 |
commit | 868bd76f404158763f54d59f2c7284fe1a4029c8 (patch) | |
tree | 648deb910754acabf8bdf22e06ab9fcfed76ef0f /model | |
parent | 34285d8cca93fc0f473636e78680fade03f26bda (diff) | |
download | chat-868bd76f404158763f54d59f2c7284fe1a4029c8.tar.gz chat-868bd76f404158763f54d59f2c7284fe1a4029c8.tar.bz2 chat-868bd76f404158763f54d59f2c7284fe1a4029c8.zip |
PLT-7809: Add support for Kopano Webmeetings WebRTC server (#7590)
* Add support for Kopano Webmeetings WebRTC server
Add an option to select which WebRTC server to use and add support to
use Kopano Webmeetings as backend instead of Janus. If the new
configuration is not set, WebRTC assumes Janus is used as backend.
* Fixup: remove redundant case. default to janus
* Fixup: use GatewayAdminUrl as direct prefix to admin URL entry point
* Fixup: consumeAndClose
Diffstat (limited to 'model')
-rw-r--r-- | model/config.go | 1 | ||||
-rw-r--r-- | model/webrtc.go | 21 | ||||
-rw-r--r-- | model/webrtc_test.go | 6 |
3 files changed, 22 insertions, 6 deletions
diff --git a/model/config.go b/model/config.go index d9fbca451..7becddff4 100644 --- a/model/config.go +++ b/model/config.go @@ -465,6 +465,7 @@ type NativeAppSettings struct { type WebrtcSettings struct { Enable *bool + GatewayType *string GatewayWebsocketUrl *string GatewayAdminUrl *string GatewayAdminSecret *string diff --git a/model/webrtc.go b/model/webrtc.go index fa15a4b71..3318128fe 100644 --- a/model/webrtc.go +++ b/model/webrtc.go @@ -11,19 +11,24 @@ import ( type WebrtcInfoResponse struct { Token string `json:"token"` GatewayUrl string `json:"gateway_url"` + GatewayType string `json:"gateway_type"` StunUri string `json:"stun_uri,omitempty"` TurnUri string `json:"turn_uri,omitempty"` TurnPassword string `json:"turn_password,omitempty"` TurnUsername string `json:"turn_username,omitempty"` } -type GatewayResponse struct { +type JanusGatewayResponse struct { Status string `json:"janus"` } -func GatewayResponseFromJson(data io.Reader) *GatewayResponse { +type KopanoWebmeetingsResponse struct { + Value string `json:"value"` +} + +func JanusGatewayResponseFromJson(data io.Reader) *JanusGatewayResponse { decoder := json.NewDecoder(data) - var o GatewayResponse + var o JanusGatewayResponse err := decoder.Decode(&o) if err == nil { return &o @@ -51,3 +56,13 @@ func WebrtcInfoResponseFromJson(data io.Reader) *WebrtcInfoResponse { return nil } } + +func KopanoWebmeetingsResponseFromJson(data io.Reader) *KopanoWebmeetingsResponse { + decoder := json.NewDecoder(data) + var o KopanoWebmeetingsResponse + err := decoder.Decode(&o) + if err == nil { + return &o + } + return nil +} diff --git a/model/webrtc_test.go b/model/webrtc_test.go index 4b8b26dc1..30a92f2b1 100644 --- a/model/webrtc_test.go +++ b/model/webrtc_test.go @@ -27,20 +27,20 @@ func TestWebrtcInfoResponseToFromJson(t *testing.T) { } } -func TestGatewayResponseFromJson(t *testing.T) { +func TestJanusGatewayResponseFromJson(t *testing.T) { if testing.Short() { t.SkipNow() } // Valid Gateway Response s1 := `{"janus": "something"}` - g1 := GatewayResponseFromJson(strings.NewReader(s1)) + g1 := JanusGatewayResponseFromJson(strings.NewReader(s1)) CheckString(t, g1.Status, "something") // Malformed JSON s2 := `{"wat"` - g2 := GatewayResponseFromJson(strings.NewReader(s2)) + g2 := JanusGatewayResponseFromJson(strings.NewReader(s2)) if g2 != nil { t.Fatal("expected nil") |