diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-04-16 21:14:31 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-16 21:14:31 -0400 |
commit | 74ffb6f98f7ee8b4e61743919ab20460c57ad4da (patch) | |
tree | ad840112478819775c5c2acec88f508cebc28713 /model | |
parent | c7f26bb1103e75c451eba3b720ac41097c427fbc (diff) | |
download | chat-74ffb6f98f7ee8b4e61743919ab20460c57ad4da.tar.gz chat-74ffb6f98f7ee8b4e61743919ab20460c57ad4da.tar.bz2 chat-74ffb6f98f7ee8b4e61743919ab20460c57ad4da.zip |
Implement GET /webrtc/token endpoint for APIv4 (#6046)
Diffstat (limited to 'model')
-rw-r--r-- | model/client4.go | 13 | ||||
-rw-r--r-- | model/webrtc.go | 32 | ||||
-rw-r--r-- | model/webrtc_test.go | 19 |
3 files changed, 64 insertions, 0 deletions
diff --git a/model/client4.go b/model/client4.go index 943525420..6281b3df4 100644 --- a/model/client4.go +++ b/model/client4.go @@ -2286,6 +2286,19 @@ func (c *Client4) UpdateUserStatus(userId string, userStatus *Status) (*Status, } } +// Webrtc Section + +// GetWebrtcToken returns a valid token, stun server and turn server with credentials to +// use with the Mattermost WebRTC service. +func (c *Client4) GetWebrtcToken() (*WebrtcInfoResponse, *Response) { + if r, err := c.DoApiGet("/webrtc/token", ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return WebrtcInfoResponseFromJson(r.Body), BuildResponse(r) + } +} + // Emoji Section // CreateEmoji will save an emoji to the server if the current user has permission diff --git a/model/webrtc.go b/model/webrtc.go index e746d62a8..fa15a4b71 100644 --- a/model/webrtc.go +++ b/model/webrtc.go @@ -1,3 +1,6 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + package model import ( @@ -5,6 +8,15 @@ import ( "io" ) +type WebrtcInfoResponse struct { + Token string `json:"token"` + GatewayUrl string `json:"gateway_url"` + 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 { Status string `json:"janus"` } @@ -19,3 +31,23 @@ func GatewayResponseFromJson(data io.Reader) *GatewayResponse { return nil } } + +func (o *WebrtcInfoResponse) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + +func WebrtcInfoResponseFromJson(data io.Reader) *WebrtcInfoResponse { + decoder := json.NewDecoder(data) + var o WebrtcInfoResponse + err := decoder.Decode(&o) + if err == nil { + return &o + } else { + return nil + } +} diff --git a/model/webrtc_test.go b/model/webrtc_test.go new file mode 100644 index 000000000..2418bd53a --- /dev/null +++ b/model/webrtc_test.go @@ -0,0 +1,19 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "strings" + "testing" +) + +func TestWebrtcJson(t *testing.T) { + o := WebrtcInfoResponse{Token: NewId(), GatewayUrl: NewId()} + json := o.ToJson() + ro := WebrtcInfoResponseFromJson(strings.NewReader(json)) + + if o.Token != ro.Token { + t.Fatal("Tokens do not match") + } +} |