diff --git a/src/restapi.rs b/src/restapi.rs index 68f73cf..e1d999b 100644 --- a/src/restapi.rs +++ b/src/restapi.rs @@ -1,4 +1,4 @@ -use crate::types::audio_query::AudioQueryType; +use crate::types::{audio_query::AudioQueryType, speaker::Speaker}; use bytes::Bytes; use reqwest::{header::HeaderMap, Client, RequestBuilder, Result}; @@ -62,4 +62,14 @@ impl RestAPI { .await?; Ok(data) } + + pub async fn speakers(&self) -> Result> { + let speakers = self + .request("GET", "/speakers") + .send() + .await? + .json() + .await?; + Ok(speakers) + } } diff --git a/src/types/mod.rs b/src/types/mod.rs index 6fa1a3a..cfea91b 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -1 +1,2 @@ pub mod audio_query; +pub mod speaker; diff --git a/src/types/speaker.rs b/src/types/speaker.rs new file mode 100644 index 0000000..5f1ff04 --- /dev/null +++ b/src/types/speaker.rs @@ -0,0 +1,21 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct Speaker { + pub supported_features: SupportedFeatures, + pub name: String, + pub speaker_uuid: String, + pub styles: Vec