Exemplo n.º 1
0
        private Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
        {
            switch (command.Command)
            {
            case PlaystateCommand.Stop:
                _playlist.Clear();
                return(_device.SetStop(CancellationToken.None));

            case PlaystateCommand.Pause:
                return(_device.SetPause(CancellationToken.None));

            case PlaystateCommand.Unpause:
                return(_device.SetPlay(CancellationToken.None));

            case PlaystateCommand.PlayPause:
                return(_device.IsPaused ? _device.SetPlay(CancellationToken.None) : _device.SetPause(CancellationToken.None));

            case PlaystateCommand.Seek:
                return(Seek(command.SeekPositionTicks ?? 0));

            case PlaystateCommand.NextTrack:
                return(SetPlaylistIndex(_currentPlaylistIndex + 1, cancellationToken));

            case PlaystateCommand.PreviousTrack:
                return(SetPlaylistIndex(_currentPlaylistIndex - 1, cancellationToken));
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
        {
            switch (command.Command)
            {
            case PlaystateCommand.Stop:
                Playlist.Clear();
                return(_device.SetStop());

            case PlaystateCommand.Pause:
                return(_device.SetPause());

            case PlaystateCommand.Unpause:
                return(_device.SetPlay());

            case PlaystateCommand.Seek:
            {
                return(Seek(command.SeekPositionTicks ?? 0));
            }

            case PlaystateCommand.NextTrack:
                return(SetPlaylistIndex(_currentPlaylistIndex + 1));

            case PlaystateCommand.PreviousTrack:
                return(SetPlaylistIndex(_currentPlaylistIndex - 1));
            }

            return(Task.FromResult(true));
        }
        public void Post(SendPlaystateCommand request)
        {
            var config = Plugin.Instance.Configuration;

            //Check Client Supports MediaControl

            // if (CheckSupportsMediaControl()==false)
            //   {
            //       _logger.Debug("FrontView+ -- Play Control -- Client does not support Media Control");
            //      return;
            //  }

            var ClientSessionID = GetClientID();


            var SessionID = config.SelectedDeviceId;



            _logger.Debug("--- FrontView+ Remote Command: Command Details: " + request.Command.ToString());


            var command = new PlaystateRequest
            {
                Command           = request.Command,
                SeekPositionTicks = 0
                                    //   ControllingUserId = UserID
            };

            _logger.Debug("--- FrontView+ PlayStateCommand: Command Sent: " + request.Command + " Session Id: " + SessionID + " Client Requesting ID: " + ClientSessionID);
            var task = _sessionManager.SendPlaystateCommand(SessionID, ClientSessionID, command, CancellationToken.None);

            Task.WaitAll(task);
        }
Exemplo n.º 4
0
        private async Task SendCommand(string commandString, long?seekPosition = null)
        {
            if (CanSendCommand())
            {
                var request = new PlaystateRequest
                {
                    Command = commandString.ToPlaystateCommandEnum()
                };

                if (seekPosition.HasValue)
                {
                    request.SeekPositionTicks = seekPosition;
                }

                try
                {
                    SendingCommand = true;
                    await ApiClient.SendPlaystateCommandAsync(SelectedClient.Id, request);
                }
                catch (HttpException ex)
                {
                    Utils.HandleHttpException("SendPlaystateCommand(" + commandString + ")", ex, NavigationService, Log);
                }

                SendingCommand = false;
            }
        }
        private async Task SendCommand(string commandString, long?seekAmount = null)
        {
            if (CanSendCommand())
            {
                var request = new PlaystateRequest
                {
                    Command = commandString.ToPlaystateCommandEnum()
                };

                if (seekAmount.HasValue)
                {
                    request.SeekPositionTicks = SelectedClient.NowPlayingPositionTicks + seekAmount.Value;
                }

                try
                {
                    SendingCommand = true;
                    await _apiClient.SendPlaystateCommandAsync(SelectedClient.Id, request);
                }
                catch (HttpException ex)
                {
                    Log.ErrorException("SendPlaystateCommand(" + commandString + ")", ex);
                }

                SendingCommand = false;
            }
        }
Exemplo n.º 6
0
 public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
 {
     return(SendMessage(new WebSocketMessage <PlaystateRequest>
     {
         MessageType = "Playstate",
         Data = command
     }, cancellationToken));
 }
Exemplo n.º 7
0
        public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
        {
            var socket = GetActiveSocket();

            return(socket.SendAsync(new WebSocketMessage <PlaystateRequest>
            {
                MessageType = "Playstate",
                Data = command
            }, cancellationToken));
        }
Exemplo n.º 8
0
        private void send_command(PlaystateCommand type, string ContentId, Guid?userId)
        {
            PlaystateRequest command = new PlaystateRequest
            {
                Command           = type,
                ControllingUserId = userId.HasValue ? userId.Value.ToString("N") : null
            };

            _sessionManager.SendPlaystateCommand(ContentId, ContentId, command, CancellationToken.None);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Sends the playstate command.
        /// </summary>
        /// <param name="sessionId">The session id.</param>
        /// <param name="command">The command.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task.</returns>
        public Task SendPlaystateCommand(Guid sessionId, PlaystateRequest command, CancellationToken cancellationToken)
        {
            var session = GetSessionForRemoteControl(sessionId);

            if (command.Command == PlaystateCommand.Seek && !session.CanSeek)
            {
                throw new ArgumentException(string.Format("Session {0} is unable to seek.", session.Id));
            }

            return(session.SessionController.SendPlaystateCommand(command, cancellationToken));
        }
Exemplo n.º 10
0
        public ActionResult SendPlaystateCommand(
            [FromRoute, Required] string?sessionId,
            [FromBody] PlaystateRequest playstateRequest)
        {
            _sessionManager.SendPlaystateCommand(
                RequestHelpers.GetSession(_sessionManager, _authContext, Request).Id,
                sessionId,
                playstateRequest,
                CancellationToken.None);

            return(NoContent());
        }
Exemplo n.º 11
0
        public void Post(SendPlaystateCommand request)
        {
            var command = new PlaystateRequest
            {
                Command           = request.Command,
                SeekPositionTicks = request.SeekPositionTicks
            };

            var task = _sessionManager.SendPlaystateCommand(GetSession(_sessionContext).Result.Id, request.Id, command, CancellationToken.None);

            Task.WaitAll(task);
        }
Exemplo n.º 12
0
        private void send_seek_command(long?ticks, string ContentId, Guid?userId)
        {
            Plugin.DebugLogger($"Seeking to {ticks}");

            PlaystateRequest command = new PlaystateRequest
            {
                Command           = PlaystateCommand.Seek,
                SeekPositionTicks = ticks,
                ControllingUserId = userId.HasValue ? userId.Value.ToString("N") : null
            };

            _sessionManager.SendPlaystateCommand(ContentId, ContentId, command, CancellationToken.None);
        }
Exemplo n.º 13
0
        public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
        {
            var args = new Dictionary <string, string>();

            if (command.Command == PlaystateCommand.Seek)
            {
                if (!command.SeekPositionTicks.HasValue)
                {
                    throw new ArgumentException("SeekPositionTicks cannot be null");
                }

                args["SeekPositionTicks"] = command.SeekPositionTicks.Value.ToString(CultureInfo.InvariantCulture);
            }

            return(SendMessage(command.Command.ToString(), args, cancellationToken));
        }
Exemplo n.º 14
0
        public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken)
        {
            switch (command.Command)
            {
            case PlaystateCommand.Stop:
                Playlist.Clear();
                return(_device.SetStop());

            case PlaystateCommand.Pause:
                return(_device.SetPause());

            case PlaystateCommand.Unpause:
                return(_device.SetPlay());

            case PlaystateCommand.Seek:
                var playlistItem = Playlist.FirstOrDefault(p => p.PlayState == 1);
                if (playlistItem != null && playlistItem.Transcode && playlistItem.IsVideo && _currentItem != null)
                {
                    var newItem = CreatePlaylistItem(_currentItem, command.SeekPositionTicks ?? 0, GetServerAddress());
                    playlistItem.StartPositionTicks = newItem.StartPositionTicks;
                    playlistItem.StreamUrl          = newItem.StreamUrl;
                    playlistItem.Didl = newItem.Didl;
                    return(_device.SetAvTransport(playlistItem.StreamUrl, playlistItem.DlnaHeaders, playlistItem.Didl));
                }
                return(_device.Seek(TimeSpan.FromTicks(command.SeekPositionTicks ?? 0)));


            case PlaystateCommand.NextTrack:
                _currentItem = null;
                return(SetNext());

            case PlaystateCommand.PreviousTrack:
                _currentItem = null;
                return(SetPrevious());
            }

            return(Task.FromResult(true));
        }
Exemplo n.º 15
0
        public Task SendPlaystateCommand(string controllingSessionId, string sessionId, PlaystateRequest command, CancellationToken cancellationToken)
        {
            var session = GetSessionForRemoteControl(sessionId);

            var controllingSession = GetSession(controllingSessionId);

            AssertCanControl(session, controllingSession);
            if (controllingSession.UserId.HasValue)
            {
                command.ControllingUserId = controllingSession.UserId.Value.ToString("N");
            }

            return(session.SessionController.SendPlaystateCommand(command, cancellationToken));
        }