gst_client_rs/resources/
debug.rs

1//! Define [`struct@Debug`] which encapsulate methods
2//! of [`Debug API`][1] for [`GStreamer`][2]
3//!
4//! Details about [`GStreamer Debugging`]
5//!
6//! [GStreamer]: https://gstreamer.freedesktop.org/
7//! [1]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon_-_C_API#Debug
8//! [2]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Debugging
9use crate::{gstd_types, Error, GstClient};
10
11/// Performs requests to `debug/` endpoint
12#[derive(Debug, Clone)]
13pub struct Debug {
14    client: GstClient,
15}
16
17impl Debug {
18    pub(crate) fn new(client: &GstClient) -> Self {
19        Self {
20            client: client.clone(),
21        }
22    }
23    /// Performs `PUT debug/enable?name=enable`
24    /// API request, returning the parsed [`gstd_types::Response`]
25    ///
26    /// # Errors
27    ///
28    /// If API request cannot be performed, or fails.
29    /// See [`Error`] for details.
30    pub async fn enable(&self) -> Result<gstd_types::Response, Error> {
31        let url = self.client.base_url.join("debug/enable?name=true").map_err(Error::IncorrectApiUrl)?;
32        let resp = self.client.put(url).await?;
33        self.client.process_resp(resp).await
34    }
35
36    /// Performs `PUT debug/enable?name=false`
37    /// API request, returning the parsed [`gstd_types::Response`]
38    ///
39    /// # Errors
40    ///
41    /// If API request cannot be performed, or fails.
42    /// See [`Error`] for details.
43    pub async fn disable(&self) -> Result<gstd_types::Response, Error> {
44        let url = self.client.base_url.join("debug/enable?name=false").map_err(Error::IncorrectApiUrl)?;
45        let resp = self.client.put(url).await?;
46        self.client.process_resp(resp).await
47    }
48
49    /// Performs `PUT debug/reset?name={value}`
50    /// API request, returning the parsed [`gstd_types::Response`]
51    ///
52    /// # Errors
53    ///
54    /// If API request cannot be performed, or fails.
55    /// See [`Error`] for details.
56    pub async fn reset(&self, value: bool) -> Result<gstd_types::Response, Error> {
57        let val = if value { "true" } else { "false" };
58        let url = self.client.base_url.join(&format!("debug/reset?name={val}")).map_err(Error::IncorrectApiUrl)?;
59        let resp = self.client.put(url).await?;
60        self.client.process_resp(resp).await
61    }
62    /// Performs `PUT debug/threshold?name={value}`
63    /// API request, returning the parsed [`gstd_types::Response`]
64    ///
65    /// # Errors
66    ///
67    /// If API request cannot be performed, or fails.
68    /// See [`Error`] for details.
69    pub async fn threshold(&self, value: &str) -> Result<gstd_types::Response, Error> {
70        let url = self.client.base_url.join(&format!("debug/threshold?name={value}")).map_err(Error::IncorrectApiUrl)?;
71        let resp = self
72            .client
73            .put(url)
74            .await?;
75        self.client.process_resp(resp).await
76    }
77    /// Performs `PUT debug/color?name=true`
78    /// API request, returning the parsed [`gstd_types::Response`]
79    ///
80    /// # Errors
81    ///
82    /// If API request cannot be performed, or fails.
83    /// See [`Error`] for details.
84    pub async fn enable_color(&self) -> Result<gstd_types::Response, Error> {
85        let url = self.client.base_url.join("debug/color?name=true").map_err(Error::IncorrectApiUrl)?;
86        let resp = self.client.put(url).await?;
87        self.client.process_resp(resp).await
88    }
89    /// Performs `PUT debug/color?name=false`
90    /// API request, returning the parsed [`gstd_types::Response`]
91    ///
92    /// # Errors
93    ///
94    /// If API request cannot be performed, or fails.
95    /// See [`Error`] for details.
96    pub async fn disable_color(&self) -> Result<gstd_types::Response, Error> {
97        let url = self.client.base_url.join("debug/color?name=false").map_err(Error::IncorrectApiUrl)?;
98        let resp = self.client.put(url).await?;
99        self.client.process_resp(resp).await
100    }
101}