Skip to main content

opensubsonic/api/
scanning.rs

1//! Media Library Scanning API endpoints.
2
3use crate::Client;
4use crate::data::ScanStatus;
5use crate::error::Error;
6
7impl Client {
8    /// Get the current scan status.
9    ///
10    /// See <https://opensubsonic.netlify.app/docs/endpoints/getscanstatus/>
11    pub async fn get_scan_status(&self) -> Result<ScanStatus, Error> {
12        let data = self.get_response("getScanStatus", &[]).await?;
13        let status = data
14            .get("scanStatus")
15            .ok_or_else(|| Error::Parse("Missing 'scanStatus' in response".into()))?;
16        Ok(serde_json::from_value(status.clone())?)
17    }
18
19    /// Start a media library scan.
20    ///
21    /// See <https://opensubsonic.netlify.app/docs/endpoints/startscan/>
22    pub async fn start_scan(&self) -> Result<ScanStatus, Error> {
23        let data = self.get_response("startScan", &[]).await?;
24        let status = data
25            .get("scanStatus")
26            .ok_or_else(|| Error::Parse("Missing 'scanStatus' in response".into()))?;
27        Ok(serde_json::from_value(status.clone())?)
28    }
29}