Example #1
0
        private void ConnectBtn_Click(object sender, RoutedEventArgs e)
        {
            if (_ClientPeer == null)
            {
                _ClientPeer = new RtcClient(SocketUrl.Text);
                // Set RenderLocal callback
                _ClientPeer.SetRenderLocal((BGR24, w, h) =>
                {
                    RefreshLocalView();
                });
                // Set RenderRemote callback
                _ClientPeer.SetRenderRemote((BGR24, w, h) =>
                {
                    _RemoteView = new Bitmap((int)w, (int)h, (int)w * 3, System.Drawing.Imaging.PixelFormat.Format24bppRgb, BGR24);
                    RefreshRemoteView();
                });
            }

            try
            {
                _ClientPeer.SocketConnect();
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error Socket Location:{SocketUrl.Text}");
                _ClientPeer.Dispose();
                _ClientPeer = null;
            }
        }
        private void Auhenticate(RtcClient rtcClient)
        {
            var result = rtcClient.Auth.Identity().Result;

            if (result.StatusCode == HttpStatusCode.OK)
            {
                var header = GetHeader(result);

                // ReSharper disable once InvertIf
                if (header != null && header.Value.Equals("authrequired"))
                {
                    var authResult = rtcClient.Auth.SecurityCheck(
                        GetSetting(RtcSettings.Username),
                        GetSetting(RtcSettings.Password)).Result;

                    var authHeader = GetHeader(authResult);

                    if (authHeader != null && authHeader.Value.Equals("authfailed"))
                    {
                        throw new UnauthorizedAccessException();
                    }
                }
            }
            else
            {
                throw new Exception("Incorrect Identity headers");
            }
        }
        private RtcClient GetClient()
        {
            var client = RtcClient.Connect(
                GetSetting(RtcSettings.Host),
                GetSetting(RtcSettings.Ccm),
                null);

            Auhenticate(client);

            return(client);
        }
        private string GetProjectUuid(RtcClient client)
        {
            var project = GetProject(client);

            var lastIndex = project.Resource.LastIndexOf('/');

            if (lastIndex <= 0 || lastIndex == project.Resource.Length)
            {
                throw new IncorrectProjectResourceException(project.Resource);
            }

            var projectUuid = project.Resource.Substring(lastIndex + 1);

            return(projectUuid);
        }
        private Project GetProject(RtcClient client)
        {
            var projects = client.Projects.Get().Result;

            ValidateResponse(projects, HttpStatusCode.OK);

            if (projects.Data.Total == 0)
            {
                throw new UnauthorizedAccessException();
            }

            var project = projects.Data.Entities.SingleOrDefault(_ =>
                                                                 _.Title.StartsWith(GetSetting(RtcSettings.Project), StringComparison.Ordinal));

            return(project);
        }