1use serde::Serialize;
2use std::ops::RangeInclusive;
3
4use crate::command::impl_command;
5use crate::data::common::*;
6use crate::data::maybe_range;
7use crate::data::option::WithOptions;
8use crate::data::player::*;
9use crate::data::quickselect::*;
10use crate::data::song::*;
11
12#[derive(Serialize, Debug, Default, Clone, Copy)]
13pub struct GetPlayers {}
14impl_command!(GetPlayers, "player", "get_players", Vec<PlayerInfo>);
15
16#[derive(Serialize, Debug, Clone, Copy)]
17pub struct GetPlayerInfo {
18 #[serde(rename = "pid")]
19 pub player_id: PlayerId,
20}
21impl_command!(GetPlayerInfo, "player", "get_player_info", PlayerInfo);
22
23#[derive(Serialize, Debug, Clone, Copy)]
24pub struct GetPlayState {
25 #[serde(rename = "pid")]
26 pub player_id: PlayerId,
27}
28impl_command!(GetPlayState, "player", "get_play_state", PlayState);
29
30#[derive(Serialize, Debug, Clone, Copy)]
31pub struct SetPlayState {
32 #[serde(rename = "pid")]
33 pub player_id: PlayerId,
34 pub state: PlayState,
35}
36impl_command!(SetPlayState, "player", "set_play_state", ());
37
38#[derive(Serialize, Debug, Clone, Copy)]
39pub struct GetNowPlayingMedia {
40 #[serde(rename = "pid")]
41 pub player_id: PlayerId,
42}
43impl_command!(GetNowPlayingMedia, "player", "get_now_playing_media", WithOptions<NowPlayingInfo>);
44
45#[derive(Serialize, Debug, Clone, Copy)]
46pub struct GetVolume {
47 #[serde(rename = "pid")]
48 pub player_id: PlayerId,
49}
50impl_command!(GetVolume, "player", "get_volume", Volume);
51
52#[derive(Serialize, Debug, Clone, Copy)]
53pub struct SetVolume {
54 #[serde(rename = "pid")]
55 pub player_id: PlayerId,
56 pub level: Volume,
57}
58impl_command!(SetVolume, "player", "set_volume", ());
59
60#[derive(Serialize, Debug, Clone, Copy)]
61pub struct VolumeUp {
62 #[serde(rename = "pid")]
63 pub player_id: PlayerId,
64 pub step: Option<VolumeStep>,
65}
66impl_command!(VolumeUp, "player", "volume_up", ());
67
68#[derive(Serialize, Debug, Clone, Copy)]
69pub struct VolumeDown {
70 #[serde(rename = "pid")]
71 pub player_id: PlayerId,
72 pub step: Option<VolumeStep>,
73}
74impl_command!(VolumeDown, "player", "volume_down", ());
75
76#[derive(Serialize, Debug, Clone, Copy)]
77pub struct GetMute {
78 #[serde(rename = "pid")]
79 pub player_id: PlayerId,
80}
81impl_command!(GetMute, "player", "get_mute", MuteState);
82
83#[derive(Serialize, Debug, Clone, Copy)]
84pub struct SetMute {
85 #[serde(rename = "pid")]
86 pub player_id: PlayerId,
87 pub state: MuteState,
88}
89impl_command!(SetMute, "player", "set_mute", ());
90
91#[derive(Serialize, Debug, Clone, Copy)]
92pub struct ToggleMute {
93 #[serde(rename = "pid")]
94 pub player_id: PlayerId,
95}
96impl_command!(ToggleMute, "player", "toggle_mute", ());
97
98#[derive(Serialize, Debug, Clone, Copy)]
99pub struct GetPlayMode {
100 #[serde(rename = "pid")]
101 pub player_id: PlayerId,
102}
103impl_command!(GetPlayMode, "player", "get_play_mode", PlayMode);
104
105#[derive(Serialize, Debug, Clone, Copy)]
106pub struct SetPlayMode {
107 #[serde(rename = "pid")]
108 pub player_id: PlayerId,
109 pub repeat: Option<RepeatMode>,
110 pub shuffle: Option<ShuffleMode>,
111}
112impl_command!(SetPlayMode, "player", "set_play_mode", ());
113
114#[derive(Serialize, Debug, Clone)]
115pub struct GetQueue {
116 #[serde(rename = "pid")]
117 pub player_id: PlayerId,
118 #[serde(serialize_with = "maybe_range::serialize")]
119 pub range: Option<RangeInclusive<usize>>,
120}
121impl_command!(GetQueue, "player", "get_queue", Vec<SongInfo>);
122
123#[derive(Serialize, Debug, Clone, Copy)]
124pub struct PlayQueueItem {
125 #[serde(rename = "pid")]
126 pub player_id: PlayerId,
127 #[serde(rename = "qid")]
128 pub queue_id: QueueId,
129}
130impl_command!(PlayQueueItem, "player", "play_queue", ());
131
132#[derive(Serialize, Debug, Clone)]
133pub struct RemoveFromQueue {
134 #[serde(rename = "pid")]
135 pub player_id: PlayerId,
136 #[serde(rename = "qid")]
137 pub queue_ids: Vec<QueueId>,
138}
139impl_command!(RemoveFromQueue, "player", "remove_from_queue", ());
140
141#[derive(Serialize, Debug, Clone)]
142pub struct SaveQueue {
143 #[serde(rename = "pid")]
144 pub player_id: PlayerId,
145 pub name: String,
146}
147impl_command!(SaveQueue, "player", "save_queue", ());
148
149#[derive(Serialize, Debug, Clone, Copy)]
150pub struct ClearQueue {
151 #[serde(rename = "pid")]
152 pub player_id: PlayerId,
153}
154impl_command!(ClearQueue, "player", "clear_queue", ());
155
156#[derive(Serialize, Debug, Clone)]
157pub struct MoveQueue {
158 #[serde(rename = "pid")]
159 pub player_id: PlayerId,
160 #[serde(rename = "sqid")]
161 pub src_queue_ids: Vec<QueueId>,
162 #[serde(rename = "dqid")]
163 pub dst_queue_id: QueueId,
164}
165impl_command!(MoveQueue, "player", "move_queue_item", ());
166
167#[derive(Serialize, Debug, Clone, Copy)]
168pub struct PlayNext {
169 #[serde(rename = "pid")]
170 pub player_id: PlayerId,
171}
172impl_command!(PlayNext, "player", "play_next", ());
173
174#[derive(Serialize, Debug, Clone, Copy)]
175pub struct PlayPrevious {
176 #[serde(rename = "pid")]
177 pub player_id: PlayerId,
178}
179impl_command!(PlayPrevious, "player", "play_previous", ());
180
181#[derive(Serialize, Debug, Clone, Copy)]
182pub struct SetQuickSelect {
183 #[serde(rename = "pid")]
184 pub player_id: PlayerId,
185 pub id: QuickSelectId,
186}
187impl_command!(SetQuickSelect, "player", "set_quickselect", ());
188
189#[derive(Serialize, Debug, Clone, Copy)]
190pub struct PlayQuickSelect {
191 #[serde(rename = "pid")]
192 pub player_id: PlayerId,
193 pub id: QuickSelectId,
194}
195impl_command!(PlayQuickSelect, "player", "play_quickselect", ());
196
197#[derive(Serialize, Debug, Clone, Copy)]
198pub struct GetQuickSelects {
199 #[serde(rename = "pid")]
200 pub player_id: PlayerId,
201 pub id: Option<QuickSelectId>,
202}
203impl_command!(GetQuickSelects, "player", "get_quickselects", Vec<QuickSelect>);
204
205#[derive(Serialize, Debug, Clone, Copy)]
206pub struct CheckUpdate {
207 #[serde(rename = "pid")]
208 pub player_id: PlayerId,
209}
210impl_command!(CheckUpdate, "player", "check_update", UpdatePayload);