Beispiel #1
0
                #pragma warning disable CS1998 // Bei der asynchronen Methode fehlen "await"-Operatoren. Die Methode wird synchron ausgeführt.
        public async Task <IMpcCoreResponse <T> > CreateResult()
        {
            if (_response == null || _response.IsNullOrEmpty)
            {
                Status.ErrorMessage = "response is empty";
                Status.HasError     = true;

                return(this);
            }

            if (_response.IsErrorResponse)
            {
                Status = new MpcCoreResponseStatus
                {
                    HasError     = true,
                    ErrorMessage = "mpd returned an error",
                    MpdError     = ResponseParser.ParseMpdError(Command.Command, _response.RawResponse.Last())
                };
            }

            Result = Command.HandleResponse(_response);

            return(this);
        }
Beispiel #2
0
        /// <summary>
        /// Reads the status info from the MPD response and parses it into an Status DTO
        /// </summary>
        /// <returns>IStatus current MPD status info</returns>
        public IStatus GetStatus()
        {
            var status = new Status();

            foreach (var kv in _valueList)
            {
                switch (kv.Key)
                {
                case ResponseParserKeys.Partition:
                    status.Partition = kv.Value;
                    break;

                case ResponseParserKeys.Volume:
                    status.Volume = kv.Value == "-1" ? 0 : Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.Repeat:
                    status.Repeat = kv.Value == "1";
                    break;

                case ResponseParserKeys.Random:
                    status.Random = kv.Value == "1";
                    break;

                case ResponseParserKeys.Single:
                    status.Single = kv.Value == "1" || kv.Value == "oneshot";
                    break;

                case ResponseParserKeys.Consume:
                    status.Consume = kv.Value == "1";
                    break;

                case ResponseParserKeys.Playlist:
                    status.Playlist = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.PlaylistLength:
                    status.PlaylistLength = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.State:
                    status.State = kv.Value;
                    break;

                case ResponseParserKeys.Song:
                    status.Song = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.SongId:
                    status.SongId = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.NextSong:
                    status.NextSong = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.NextSongId:
                    status.NextSongId = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.Elapsed:
                    status.Elapsed = double.Parse(kv.Value, System.Globalization.CultureInfo.InvariantCulture);
                    break;

                case ResponseParserKeys.Duration:
                    status.Duration = double.Parse(kv.Value, System.Globalization.CultureInfo.InvariantCulture);
                    break;

                case ResponseParserKeys.Bitrate:
                    status.Bitrate = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.Crossfade:
                    status.Crossfade = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.MixRampDb:
                    status.MixRampDb = double.Parse(kv.Value, System.Globalization.CultureInfo.InvariantCulture);
                    break;

                case ResponseParserKeys.MixRampDelay:
                    status.MixRampDelay = Convert.ToInt32(kv.Value);
                    break;

                case ResponseParserKeys.Audio:
                    status.AudioSetting = GetAudio(kv.Value);
                    break;

                case ResponseParserKeys.Error:
                    status.Error = ResponseParser.ParseMpdError("error in status", kv.Value);
                    break;

                case ResponseParserKeys.UpdatingDb:
                    status.UpdateJobId = Convert.ToInt32(kv.Value);
                    break;

                // deprecated values to ignore
                case ResponseParserKeys.Time:
                    break;

                // default
                default:
                    throw new Exception($"value '{kv.Key}:{kv.Value}' is not handled");
                }
            }

            return(status);
        }