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}