#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); }
/// <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); }