From b180bb46e3034d0ce75c9961a8ccea3eefbc855c Mon Sep 17 00:00:00 2001 From: enahum Date: Thu, 15 Sep 2016 09:35:44 -0300 Subject: PLT-3412 WebRTC Server side & System Console (#3706) * WebRTC Server side * WebRTC System Console * Consistency on variable names * Add turn and stun uri validation --- api/webrtc.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 api/webrtc.go (limited to 'api/webrtc.go') diff --git a/api/webrtc.go b/api/webrtc.go new file mode 100644 index 000000000..4664524f4 --- /dev/null +++ b/api/webrtc.go @@ -0,0 +1,51 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package api + +import ( + l4g "github.com/alecthomas/log4go" + "github.com/mattermost/platform/einterfaces" + "github.com/mattermost/platform/model" + "github.com/mattermost/platform/utils" + "net/http" +) + +func InitWebrtc() { + l4g.Debug(utils.T("api.webrtc.init.debug")) + + BaseRoutes.Webrtc.Handle("/token", ApiUserRequired(webrtcToken)).Methods("POST") + + BaseRoutes.WebSocket.Handle("webrtc", ApiWebSocketHandler(webrtcMessage)) +} + +func webrtcToken(c *Context, w http.ResponseWriter, r *http.Request) { + webrtcInterface := einterfaces.GetWebrtcInterface() + + if webrtcInterface == nil { + c.Err = model.NewLocAppError("webrtcToken", "api.webrtc.not_available.app_error", nil, "") + c.Err.StatusCode = http.StatusNotImplemented + return + } + + if result, err := webrtcInterface.Token(c.Session.Id); err != nil { + c.Err = err + return + } else { + w.Write([]byte(model.MapToJson(result))) + } +} + +func webrtcMessage(req *model.WebSocketRequest) (map[string]interface{}, *model.AppError) { + var ok bool + var toUserId string + if toUserId, ok = req.Data["to_user_id"].(string); !ok || len(toUserId) != 26 { + return nil, NewInvalidWebSocketParamError(req.Action, "to_user_id") + } + + event := model.NewWebSocketEvent("", "", toUserId, model.WEBSOCKET_EVENT_WEBRTC) + event.Data = req.Data + go Publish(event) + + return nil, nil +} -- cgit v1.2.3-1-g7c22