Skip to main content

gst_client/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::SuccessResponse`]
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::SuccessResponse, Error> {
31        let resp = self.client.put("debug/enable?name=true").await?;
32        self.client.process_resp(resp).await
33    }
34
35    /// Performs `PUT debug/enable?name=false`
36    /// API request, returning the parsed [`gstd_types::SuccessResponse`]
37    ///
38    /// # Errors
39    ///
40    /// If API request cannot be performed, or fails.
41    /// See [`Error`] for details.
42    pub async fn disable(&self) -> Result<gstd_types::SuccessResponse, Error> {
43        let resp = self.client.put("debug/enable?name=false").await?;
44        self.client.process_resp(resp).await
45    }
46
47    /// Performs `PUT debug/reset?name={value}`
48    /// API request, returning the parsed [`gstd_types::SuccessResponse`]
49    ///
50    /// # Errors
51    ///
52    /// If API request cannot be performed, or fails.
53    /// See [`Error`] for details.
54    pub async fn reset(&self, value: bool) -> Result<gstd_types::SuccessResponse, Error> {
55        let val = if value { "true" } else { "false" };
56        let resp = self.client.put(&format!("debug/reset?name={val}")).await?;
57        self.client.process_resp(resp).await
58    }
59    /// Performs `PUT debug/threshold?name={value}`
60    /// API request, returning the parsed [`gstd_types::SuccessResponse`]
61    ///
62    /// # Errors
63    ///
64    /// If API request cannot be performed, or fails.
65    /// See [`Error`] for details.
66    pub async fn threshold(&self, value: &str) -> Result<gstd_types::SuccessResponse, Error> {
67        let resp = self
68            .client
69            .put(&format!("debug/threshold?name={value}"))
70            .await?;
71        self.client.process_resp(resp).await
72    }
73    /// Performs `PUT debug/color?name=true`
74    /// API request, returning the parsed [`gstd_types::SuccessResponse`]
75    ///
76    /// # Errors
77    ///
78    /// If API request cannot be performed, or fails.
79    /// See [`Error`] for details.
80    pub async fn enable_color(&self) -> Result<gstd_types::SuccessResponse, Error> {
81        let resp = self.client.put("debug/color?name=true").await?;
82        self.client.process_resp(resp).await
83    }
84    /// Performs `PUT debug/color?name=false`
85    /// API request, returning the parsed [`gstd_types::SuccessResponse`]
86    ///
87    /// # Errors
88    ///
89    /// If API request cannot be performed, or fails.
90    /// See [`Error`] for details.
91    pub async fn disable_color(&self) -> Result<gstd_types::SuccessResponse, Error> {
92        let resp = self.client.put("debug/color?name=false").await?;
93        self.client.process_resp(resp).await
94    }
95}