Skip to main content

opensubsonic/api/
chat.rs

1//! Chat API endpoints.
2
3use crate::Client;
4use crate::data::ChatMessage;
5use crate::error::Error;
6
7impl Client {
8    /// Get chat messages.
9    ///
10    /// See <https://opensubsonic.netlify.app/docs/endpoints/getchatmessages/>
11    pub async fn get_chat_messages(&self, since: Option<i64>) -> Result<Vec<ChatMessage>, Error> {
12        let mut params = Vec::new();
13        let since_str;
14        if let Some(s) = since {
15            since_str = s.to_string();
16            params.push(("since", since_str.as_str()));
17        }
18        let data = self.get_response("getChatMessages", &params).await?;
19        let messages = data
20            .get("chatMessages")
21            .and_then(|v| v.get("chatMessage"))
22            .cloned()
23            .unwrap_or_else(|| serde_json::Value::Array(vec![]));
24        Ok(serde_json::from_value(messages)?)
25    }
26
27    /// Add a chat message.
28    ///
29    /// See <https://opensubsonic.netlify.app/docs/endpoints/addchatmessage/>
30    pub async fn add_chat_message(&self, message: &str) -> Result<(), Error> {
31        self.get_response("addChatMessage", &[("message", message)])
32            .await?;
33        Ok(())
34    }
35}