pushover_rs/pushover/data/
pushover_response.rs

1use serde::Deserialize;
2
3/**
4 Data of the response given by the Pushover API. (if any) 
5 **/
6#[derive(Debug, Clone, Deserialize)]
7pub struct PushoverResponse {
8    /* Always present in response */
9    /// 1 if the request was valid, 0 otherwise. (Not the HTTP status)
10    pub status: u8,
11    /// The request GUID
12    pub request: String,
13
14    /* Not always present */
15    /// Specifies a "user key" error type
16    pub user: Option<String>,
17    /// Specifies a "app token" error type
18    pub token: Option<String>,
19    /// A list of error messages
20    pub errors: Option<Vec<String>>,
21}
22
23impl PushoverResponse {
24    pub async fn try_from_reqwest_response(response: reqwest::Response) -> Result<PushoverResponse, Box<dyn std::error::Error>> {
25        let data = response.json::<PushoverResponse>().await;
26
27        if data.is_err() {
28            return Err(Box::from(data.err().unwrap()))
29        }
30
31        return Ok(data.ok().unwrap());
32    }
33
34    pub fn try_from_blocking_reqwest_response(response: reqwest::blocking::Response) -> Result<PushoverResponse, Box<dyn std::error::Error>> {
35        let data = response.json::<PushoverResponse>();
36
37        if data.is_err() {
38            return Err(Box::from(data.err().unwrap()))
39        }
40
41        return Ok(data.ok().unwrap());
42    }
43}