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}