コード例 #1
0
        public void Execute(IEvent receivedEvent)
        {
            if (receivedEvent == null)
            {
                throw new ArgumentNullException(nameof(receivedEvent));
            }

            var socketClient   = _auth.GetConnection(receivedEvent.ConnectionId);
            var clientProtocol = socketClient?.ClientProtocolVersion ?? 2.1;

            if (clientProtocol < 2.2 || !(receivedEvent.Data is JObject data))
            {
                var tracks  = _nowPlayingApiAdapter.GetTracksLegacy().ToList();
                var message = new SocketMessage(Constants.NowPlayingList, tracks);
                _hub.Publish(new PluginResponseAvailableEvent(message, receivedEvent.ConnectionId));
            }
            else
            {
                var offset    = (int)data["offset"];
                var limit     = (int)data["limit"];
                var tracks    = _nowPlayingApiAdapter.GetTracks(offset, limit).ToList();
                var total     = tracks.Count;
                var realLimit = offset + limit > total ? total - offset : limit;
                var message   = new SocketMessage
                {
                    Context = Constants.NowPlayingList,
                    Data    = new Page <Model.Entities.NowPlayingTrackInfo>
                    {
                        Data   = offset > total ? new List <Model.Entities.NowPlayingTrackInfo>() : tracks.GetRange(offset, realLimit),
                        Offset = offset,
                        Limit  = limit,
                        Total  = total,
                    },
                    NewLineTerminated = true,
                };

                _hub.Publish(new PluginResponseAvailableEvent(message, receivedEvent.ConnectionId));
            }
        }
コード例 #2
0
        public void Execute(IEvent @event)
        {
            var socketClient   = _auth.GetConnection(@event.ConnectionId);
            var clientProtocol = socketClient?.ClientProtocolVersion ?? 2.1;

            var data = @event.Data as JObject;

            if (clientProtocol < 2.2 || data == null)
            {
                var tracks  = _nowPlayingApiAdapter.GetTracksLegacy().ToList();
                var message = new SocketMessage(Constants.NowPlayingList, tracks);
                _hub.Publish(new PluginResponseAvailableEvent(message, @event.ConnectionId));
            }
            else
            {
                var offset    = (int)data["offset"];
                var limit     = (int)data["limit"];
                var tracks    = _nowPlayingApiAdapter.GetTracks(offset, limit).ToList();
                var total     = tracks.Count;
                var realLimit = offset + limit > total ? total - offset : limit;
                var message   = new SocketMessage
                {
                    Context = Constants.NowPlayingList,
                    Data    = new Page <NowPlaying>
                    {
                        Data   = offset > total ? new List <NowPlaying>() : tracks.GetRange(offset, realLimit),
                        Offset = offset,
                        Limit  = limit,
                        Total  = total
                    },
                    NewLineTerminated = true
                };

                _hub.Publish(new PluginResponseAvailableEvent(message, @event.ConnectionId));
            }
        }