gst_client/error.rs
1//! Defining library errors.
2use crate::gstd_types::ResponseCode;
3use derive_more::{Display, Error};
4
5/// Possible errors of performing [`GstClient`] requests.
6///
7/// [`GstClient`]: crate::GstClient
8#[derive(Debug, Display, Error)]
9pub enum Error {
10 /// Performing HTTP request failed itself.
11 #[display(fmt = "Failed to perform HTTP request: {_0}")]
12 RequestFailed(reqwest::Error),
13
14 /// [`GstClient`] responded with a bad [`StatusCode`].
15 ///
16 /// [`StatusCode`]: reqwest::StatusCode
17 /// [`GstClient`]: crate::GstClient
18 #[display(fmt = "API responded with bad status: {_0}")]
19 BadStatus(#[error(not(source))] reqwest::StatusCode),
20
21 /// Failed to build [`GstClient`] client because incorrect base Url
22 ///
23 /// [`GstClient`]: crate::GstClient
24 #[display(fmt = "Failed to parse base URL: {_0}")]
25 IncorrectBaseUrl(url::ParseError),
26
27 /// Failed to create [`GstClient`] API Url
28 ///
29 /// [`GstClient`]: crate::GstClient
30 #[display(fmt = "Failed to parse URL: {_0}")]
31 IncorrectApiUrl(url::ParseError),
32
33 /// Failed to process request on [GStD] side.
34 ///
35 /// [GStD]: https://developer.ridgerun.com/wiki/index.php/GStreamer_Daemon
36 #[display(fmt = "Failed to process request with status `{_0}` and description `{_1}`")]
37 GstdError(ResponseCode, String),
38}