1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//! # Pushover API Wrapper
//!
//! https://pushover.net/api
//!
//! ## Usage
//! Add the following to `Cargo.toml`:
//!
//! ```rust,ignore
//! [dependencies]
//! pushover = "0.4.0"
//! ```
//!
//! Synchronous example:
//!
//! ```rust,no_run
//!
//! use pushover::API;
//! use pushover::requests::message::SendMessage;
//!
//! fn send_message() {
//!     let api = API::new();
//!
//!     let msg = SendMessage::new("token", "user_key", "hello");
//!
//!     let response = api.send(&msg);
//!     println!("{:?}", response.expect("Error sending message"));
//! }
//!
//! ```
//!
//! Asynchronous example:
//!
//! ```rust,no_run
//!
//! use pushover::API;
//! use pushover::requests::message::SendMessage;
//!
//! async fn send_message() {
//!     let api = API::new();
//!
//!     let msg = SendMessage::new("token", "user_key", "hello");
//!     let response = api.send_async(&msg).await;
//!
//!     println!("{:?}", response.expect("Error sending message"));
//! }
//! ```

mod client;
mod deserializers;
mod error;
pub mod requests;
mod types;

pub use self::client::API;
pub use self::error::{Error, ErrorKind};
pub use self::types::{OperatingSystem, Priority, Sound, User, UserType};

#[cfg(test)]
mod test {
    use crate::client::{API_URL, API_VERSION};
    use crate::requests::Request;
    use url::Url;

    pub fn assert_req_url<R>(req: &R, path: &str, iter: Option<&[(&str, &str)]>)
    where
        R: Request,
    {
        let mut url = Url::parse(&format!("{}/{}", API_URL, API_VERSION)).unwrap();
        req.build_url(&mut url);

        let expected_url = match iter {
            Some(x) => {
                Url::parse_with_params(&format!("{}/{}/{}", API_URL, API_VERSION, path), x).unwrap()
            }
            None => Url::parse(&format!("{}/{}/{}", API_URL, API_VERSION, path)).unwrap(),
        };

        assert_eq!(expected_url, url);
    }
}