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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//! # Pincho Rust Client Library
//!
//! Official Rust Client Library for [Pincho](https://pincho.app) - Send push notifications to your mobile devices.
//!
//! ## Features
//!
//! - **Async/await support** - Built on tokio for high-performance async operations
//! - **Type-safe builder pattern** - Compile-time guarantees for notification construction
//! - **Connection pooling** - Automatic HTTP connection reuse via reqwest
//! - **Comprehensive error handling** - Detailed error types with thiserror
//! - **Zero-copy where possible** - Efficient memory usage
//! - **Thread-safe** - All types are Send + Sync
//!
//! ## Quick Start
//!
//! ```no_run
//! use pincho::Client;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), pincho::Error> {
//! let client = Client::new("abc12345")?;
//!
//! // Send a simple notification
//! let response = client.send("Build Complete", "v1.2.3 deployed successfully").await?;
//!
//! if response.is_success() {
//! println!("Notification sent successfully!");
//! }
//!
//! Ok(())
//! }
//! ```
//!
//! ## Advanced Usage
//!
//! ```no_run
//! use pincho::{Client, Notification};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), pincho::Error> {
//! let client = Client::new("abc12345")?;
//!
//! // Build a notification with all options
//! let notification = Notification::builder()
//! .title("Deploy Complete")
//! .message("Version 1.2.3 deployed to production")
//! .notification_type("deployment")
//! .tags(vec!["production".to_string(), "release".to_string()])
//! .image_url("https://example.com/success.png")
//! .action_url("https://example.com/deployment/123")
//! .build()?;
//!
//! let response = client.send_notification(notification).await?;
//! println!("Status: {}", response.status);
//!
//! Ok(())
//! }
//! ```
//!
//! ## Error Handling
//!
//! ```no_run
//! use pincho::{Client, Error};
//!
//! #[tokio::main]
//! async fn main() {
//! let client = Client::new("abc12345").unwrap();
//!
//! match client.send("Test", "Message").await {
//! Ok(response) => println!("Success: {}", response.message),
//! Err(Error::Authentication { message, status_code }) => {
//! eprintln!("Auth error ({}): {}", status_code, message);
//! }
//! Err(Error::Validation { message, status_code }) => {
//! eprintln!("Validation error ({}): {}", status_code, message);
//! }
//! Err(Error::RateLimit { message, status_code }) => {
//! eprintln!("Rate limit ({}): {}", status_code, message);
//! }
//! Err(e) => eprintln!("Error: {}", e),
//! }
//! }
//! ```
//!
//! ## Requirements
//!
//! - Rust 2021 edition or later
//! - Tokio runtime for async operations
//!
//! ## Links
//!
//! - [Pincho Website](https://pincho.app)
//! - [API Documentation](https://pincho.app/api)
//! - [GitLab Repository](https://gitlab.com/pincho/pincho-rust)
//! - [Issue Tracker](https://gitlab.com/pincho/pincho-rust/-/issues)
// Module declarations
// Public re-exports
pub use Client;
pub use encrypt_text;
pub use ;
pub use ;
pub use ;