mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-06 12:51:42 +02:00
Make capability properties mandatory
This commit is contained in:
parent
8a0d538eda
commit
f871211384
2 changed files with 22 additions and 21 deletions
|
@ -154,11 +154,11 @@ public:
|
||||||
|
|
||||||
/// https://www.musicpd.org/doc/html/protocol.html#tags
|
/// https://www.musicpd.org/doc/html/protocol.html#tags
|
||||||
/// The current playback status
|
/// The current playback status
|
||||||
PlaybackStatus playback_status;
|
boost::optional<PlaybackStatus> playback_status;
|
||||||
/// The current loop / repeat status
|
/// The current loop / repeat status
|
||||||
boost::optional<LoopStatus> loop_status;
|
boost::optional<LoopStatus> loop_status;
|
||||||
/// The current playback rate
|
/// The current playback rate
|
||||||
float rate;
|
boost::optional<float> rate;
|
||||||
/// A value of false indicates that playback is progressing linearly through a playlist, while true means playback is progressing through a playlist in some
|
/// A value of false indicates that playback is progressing linearly through a playlist, while true means playback is progressing through a playlist in some
|
||||||
/// other order.
|
/// other order.
|
||||||
boost::optional<bool> shuffle;
|
boost::optional<bool> shuffle;
|
||||||
|
@ -171,22 +171,23 @@ public:
|
||||||
/// The maximum value which the Rate property can take. Clients should not attempt to set the Rate property above this value
|
/// The maximum value which the Rate property can take. Clients should not attempt to set the Rate property above this value
|
||||||
boost::optional<float> maximum_rate;
|
boost::optional<float> maximum_rate;
|
||||||
/// Whether the client can call the Next method on this interface and expect the current track to change
|
/// Whether the client can call the Next method on this interface and expect the current track to change
|
||||||
boost::optional<bool> can_go_next;
|
bool can_go_next = false;
|
||||||
/// Whether the client can call the Previous method on this interface and expect the current track to change
|
/// Whether the client can call the Previous method on this interface and expect the current track to change
|
||||||
boost::optional<bool> can_go_previous;
|
bool can_go_previous = false;
|
||||||
/// Whether playback can be started using "play" or "playPause"
|
/// Whether playback can be started using "play" or "playPause"
|
||||||
boost::optional<bool> can_play;
|
bool can_play = false;
|
||||||
/// Whether playback can be paused using "pause" or "playPause"
|
/// Whether playback can be paused using "pause" or "playPause"
|
||||||
boost::optional<bool> can_pause;
|
bool can_pause = false;
|
||||||
/// Whether the client can control the playback position using "seek" and "setPosition". This may be different for different tracks
|
/// Whether the client can control the playback position using "seek" and "setPosition". This may be different for different tracks
|
||||||
boost::optional<bool> can_seek;
|
bool can_seek = false;
|
||||||
/// Whether the media player may be controlled over this interface
|
/// Whether the media player may be controlled over this interface
|
||||||
boost::optional<bool> can_control;
|
bool can_control = false;
|
||||||
|
|
||||||
json toJson() const
|
json toJson() const
|
||||||
{
|
{
|
||||||
json j;
|
json j;
|
||||||
addTag(j, "playbackStatus", to_string(playback_status));
|
if (playback_status.has_value())
|
||||||
|
addTag(j, "playbackStatus", boost::optional<std::string>(to_string(playback_status.value())));
|
||||||
if (loop_status.has_value())
|
if (loop_status.has_value())
|
||||||
addTag(j, "loopStatus", boost::optional<std::string>(to_string(loop_status.value())));
|
addTag(j, "loopStatus", boost::optional<std::string>(to_string(loop_status.value())));
|
||||||
addTag(j, "rate", rate);
|
addTag(j, "rate", rate);
|
||||||
|
@ -220,28 +221,28 @@ public:
|
||||||
boost::optional<std::string> opt;
|
boost::optional<std::string> opt;
|
||||||
|
|
||||||
readTag(j, "playbackStatus", opt);
|
readTag(j, "playbackStatus", opt);
|
||||||
if (!opt.has_value())
|
if (opt.has_value())
|
||||||
playback_status = PlaybackStatus::kStopped;
|
|
||||||
else
|
|
||||||
playback_status = playback_status_from_string(opt.value());
|
playback_status = playback_status_from_string(opt.value());
|
||||||
|
else
|
||||||
|
playback_status = boost::none;
|
||||||
|
|
||||||
readTag(j, "loopStatus", opt);
|
readTag(j, "loopStatus", opt);
|
||||||
if (opt.has_value())
|
if (opt.has_value())
|
||||||
loop_status = loop_status_from_string(opt.value());
|
loop_status = loop_status_from_string(opt.value());
|
||||||
else
|
else
|
||||||
loop_status = boost::none;
|
loop_status = boost::none;
|
||||||
readTag(j, "rate", rate, 1.0f);
|
readTag(j, "rate", rate);
|
||||||
readTag(j, "shuffle", shuffle);
|
readTag(j, "shuffle", shuffle);
|
||||||
readTag(j, "volume", volume);
|
readTag(j, "volume", volume);
|
||||||
readTag(j, "position", position);
|
readTag(j, "position", position);
|
||||||
readTag(j, "minimumRate", minimum_rate);
|
readTag(j, "minimumRate", minimum_rate);
|
||||||
readTag(j, "maximumRate", maximum_rate);
|
readTag(j, "maximumRate", maximum_rate);
|
||||||
readTag(j, "canGoNext", can_go_next);
|
readTag(j, "canGoNext", can_go_next, false);
|
||||||
readTag(j, "canGoPrevious", can_go_previous);
|
readTag(j, "canGoPrevious", can_go_previous, false);
|
||||||
readTag(j, "canPlay", can_play);
|
readTag(j, "canPlay", can_play, false);
|
||||||
readTag(j, "canPause", can_pause);
|
readTag(j, "canPause", can_pause, false);
|
||||||
readTag(j, "canSeek", can_seek);
|
readTag(j, "canSeek", can_seek, false);
|
||||||
readTag(j, "canControl", can_control);
|
readTag(j, "canControl", can_control, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const Properties& other) const
|
bool operator==(const Properties& other) const
|
||||||
|
|
|
@ -65,7 +65,7 @@ todo
|
||||||
Success:
|
Success:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{"id": 1, "jsonrpc": "2.0", "result": {"artist":["Travis Scott & HVME"],"file":"http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3","name":"1Live, Westdeutscher Rundfunk Koeln","title":"Goosebumps (Remix)","trackId":"3"}}
|
{"id": 1, "jsonrpc": "2.0", "result": {"canControl":true,"canGoNext":true,"canGoPrevious":true,"canPause":true,"canPlay":true,"canSeek":false,"loopStatus":"none","playbackStatus":"playing","position":593.394,"shuffle":false,"volume":86}}
|
||||||
```
|
```
|
||||||
|
|
||||||
Error:
|
Error:
|
||||||
|
@ -85,7 +85,7 @@ todo
|
||||||
Success:
|
Success:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{"id": 1, "jsonrpc": "2.0", "result": {"canControl":true,"canGoNext":true,"canGoPrevious":true,"canPause":true,"canPlay":true,"canSeek":false,"loopStatus":"none","playbackStatus":"playing","position":593.394,"shuffle":false,"volume":86}}
|
{"id": 1, "jsonrpc": "2.0", "result": {"artist":["Travis Scott & HVME"],"file":"http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3","name":"1Live, Westdeutscher Rundfunk Koeln","title":"Goosebumps (Remix)","trackId":"3"}}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Notifications:
|
## Notifications:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue