示例#1
0
        //Removes current playing song then adds to play history.
        private Song DequeueToHistory(PlayOperation operationType)
        {
            if (_playlist.Count > 0)
            {
                var song = _playlist.Dequeue();
                _history.AddSong(song, operationType);

                if (_playlist.Count == 1)
                {
                    PlaylistRequest request = new PlaylistRequest(
                        _status, _history, PlayOperation.PlayingLast,
                        CurrentChannel, CurrentSong);

                    var resp = request.GetResponse();

                    ExtractPlaylist(resp, false);
                }

                return(song);
            }
            else
            {
                return(null);
            }
        }
示例#2
0
        /// <summary>
        /// Indicates user unmark current song as a liked-song.
        /// </summary>
        public void Unlike()
        {
            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Unlike, CurrentChannel,
                CurrentSong);

            request.GetResponse();
        }
示例#3
0
        /// <summary>
        /// Gets a new playlist.
        /// </summary>
        public void NewList()
        {
            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.NewList, CurrentChannel, null);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }
示例#4
0
        /// <summary>
        /// Notifies server that current song plays to end, then play next song.
        /// </summary>
        public void Next()
        {
            var song = DequeueToHistory(PlayOperation.PlaysToEnd);

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.PlaysToEnd, CurrentChannel,
                song);

            request.GetResponse();
        }
示例#5
0
        /// <summary>
        /// Indicates do not play current song any more.
        /// </summary>
        public void PlayNoMore()
        {
            var song = DequeueToHistory(PlayOperation.Bin);

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Bin, CurrentChannel, song);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }
示例#6
0
        /// <summary>
        /// Switches to another channel, playlist will be updated.
        /// </summary>
        /// <param name="newChannel"></param>
        public void SwitchChannel(Channel newChannel)
        {
            var song = DequeueToHistory(PlayOperation.Skip);

            CurrentChannel = newChannel;

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Skip, CurrentChannel, song);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }
示例#7
0
        public PlaylistRequestForm(PlaylistRequest request)
        {
            byte[] bytes  = new byte[8];
            Random random = new Random();

            random.NextBytes(bytes);
            r        = (BitConverter.ToUInt64(bytes, 0) % 0xFFFFFFFFFF).ToString("x10");
            app_name = "radio";
            version  = "100";

            if (request.UserStatus != null)
            {
                user_id = request.UserStatus.UserID;
                token   = request.UserStatus.Token;
                expire  = request.UserStatus.Expire;
            }
            else
            {
                user_id = token = expire = null;
            }

            type    = DataConvert.ToTypeCode(request.Operation);
            channel = DataConvert.ToChannelCode(request.RequestChannel);

            switch (request.Operation)
            {
            case PlayOperation.NewList:
                sid = String.Empty;
                h   = String.Empty;
                break;

            case PlayOperation.PlaysToEnd:
                sid = request.LastPlay.SongID;
                h   = null;
                break;

            case PlayOperation.Skip:
            case PlayOperation.Bin:
            case PlayOperation.PlayingLast:
            case PlayOperation.Like:
            case PlayOperation.Unlike:
                sid = request.LastPlay.SongID;
                h   = request.History.GetHistoryCode();
                break;
            }
        }
示例#8
0
        public PlaylistRequestForm(PlaylistRequest request)
        {
            byte[] bytes = new byte[8];
            Random random = new Random();
            random.NextBytes(bytes);
            r= (BitConverter.ToUInt64(bytes, 0) % 0xFFFFFFFFFF).ToString("x10");
            app_name = "radio";
            version = "100";

            if (request.UserStatus != null)
            {
                user_id = request.UserStatus.UserID;
                token = request.UserStatus.Token;
                expire = request.UserStatus.Expire;
            }
            else
            {
                user_id = token = expire = null;
            }

            type = DataConvert.ToTypeCode(request.Operation);
            channel = DataConvert.ToChannelCode(request.RequestChannel);

            switch (request.Operation)
            {
            case PlayOperation.NewList:
                sid = String.Empty;
                h = String.Empty;
                break;

            case PlayOperation.PlaysToEnd:
                sid = request.LastPlay.SongID;
                h = null;
                break;

            case PlayOperation.Skip:
            case PlayOperation.Bin:
            case PlayOperation.PlayingLast:
            case PlayOperation.Like:
            case PlayOperation.Unlike:
                sid = request.LastPlay.SongID;
                h = request.History.GetHistoryCode();
                break;
            }
        }
示例#9
0
        //Removes current playing song then adds to play history.
        private Song DequeueToHistory(PlayOperation operationType)
        {
            if (_playlist.Count > 0)
            {
                var song = _playlist.Dequeue();
                _history.AddSong(song, operationType);

                if (_playlist.Count == 1)
                {
                    PlaylistRequest request = new PlaylistRequest(
                        _status, _history, PlayOperation.PlayingLast,
                        CurrentChannel, CurrentSong);

                    var resp = request.GetResponse();

                    ExtractPlaylist(resp, false);
                }

                return song;
            }
            else
            {
                return null;
            }
        }
示例#10
0
        /// <summary>
        /// Indicates user unmark current song as a liked-song.
        /// </summary>
        public void Unlike()
        {
            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Unlike, CurrentChannel,
                CurrentSong);

            request.GetResponse();
        }
示例#11
0
        /// <summary>
        /// Switches to another channel, playlist will be updated.
        /// </summary>
        /// <param name="newChannel"></param>
        public void SwitchChannel(Channel newChannel)
        {
            var song = DequeueToHistory(PlayOperation.Skip);

            CurrentChannel = newChannel;

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Skip, CurrentChannel, song);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }
示例#12
0
        /// <summary>
        /// Indicates do not play current song any more.
        /// </summary>
        public void PlayNoMore()
        {
            var song = DequeueToHistory(PlayOperation.Bin);

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.Bin, CurrentChannel, song);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }
示例#13
0
        /// <summary>
        /// Notifies server that current song plays to end, then play next song.
        /// </summary>
        public void Next()
        {
            var song = DequeueToHistory(PlayOperation.PlaysToEnd);

            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.PlaysToEnd, CurrentChannel,
                song);

            request.GetResponse();
        }
示例#14
0
        /// <summary>
        /// Gets a new playlist.
        /// </summary>
        public void NewList()
        {
            PlaylistRequest request = new PlaylistRequest(
                _status, _history, PlayOperation.NewList, CurrentChannel, null);

            var resp = request.GetResponse();

            ExtractPlaylist(resp, true);
        }