smsir_rust/
lib.rs

1//! # smsir-rust
2//!
3//! Comprehensive, idiomatic, and extensible Rust client for the SMS.ir API.
4//!
5//! ## Modules
6//!
7//! - [`crate::service::SmsIrService`]: Provides the main service for interacting with the SMS.ir API, including sending messages, querying credit, and retrieving reports. All service methods are async and return a [`crate::result::SmsIrResult`] or an [`crate::error::SmsIrError`].
8//! - [`crate::result::SmsIrResult`]: Represents the status, message, and optional data returned from API calls.
9//! - [`crate::error::SmsIrError`]: Comprehensive error type covering HTTP, JSON, timeout, API, and unexpected errors, using idiomatic Rust error handling.
10//!
11//! ## Usage Example
12//! 
13//! ### Example: Get Credit
14//!
15//! ```rust
16//! use smsir_rust::{service::SmsIrServiceBuilder,error::SmsIrError};
17//!
18//! #[tokio::main]
19//! async fn main() -> Result<(), SmsIrError> {
20//!     let service = SmsIrServiceBuilder::new("your_api_key")
21//!         .timeout(std::time::Duration::from_secs(10))
22//!         .build()?;
23//!     let result = service.get_credit().await?;
24//!     match result.data {
25//!         Some(data) => println!("Your credit is: {}", data),
26//!         None => println!("No credit data available."),
27//!     }
28//!     Ok(())
29//! }
30//! ```
31//!
32//! ### Example: Send a Single SMS
33//!
34//! ```rust
35//! use smsir_rust::{service::SmsIrServiceBuilder, error::SmsIrError};
36//!
37//! #[tokio::main]
38//! async fn main() -> Result<(), SmsIrError> {
39//!     let service = SmsIrServiceBuilder::new("your_api_key").build()?;
40//!     // Replace with your sender and receiver numbers
41//!     let sender = "Sender number";
42//!     let receiver = "Receiver number";
43//!     let message = "Message text";
44//!     // For single send, use bulk_send with one mobile
45//!     let result = service.bulk_send(sender, message, &[receiver.to_string()], None).await?;
46//!     match result.data {
47//!         Some(data) => println!("Sent successfully: {:?}", data),
48//!         None => println!("No response data."),
49//!     }
50//!     Ok(())
51//! }
52//! ```
53//!
54//! ### Example: Send Verification SMS with Template
55//!
56//! ```rust
57//! use smsir_rust::{service::SmsIrServiceBuilder, error::SmsIrError};
58//! use serde_json::json;
59//!
60//! #[tokio::main]
61//! async fn main() -> Result<(), SmsIrError> {
62//!     let service = SmsIrServiceBuilder::new("your_api_key").build()?;
63//!     let receiver = "Receiver number";
64//!     let template_id = 100000; // Replace with your template ID
65//!     let params = vec![json!({"Code": "12345"})];
66//!     let result = service.verify_send(receiver, template_id, &params).await?;
67//!     match result.data {
68//!         Some(data) => println!("Verification sent: {:?}", data),
69//!         None => println!("No response data."),
70//!     }
71//!     Ok(())
72//! }
73//! ```
74//! ---
75
76pub mod error;
77pub mod result;
78pub mod service;