Expand description
§smsir-rust
Comprehensive, idiomatic, and extensible Rust client for the SMS.ir API.
§Modules
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 acrate::result::SmsIrResultor ancrate::error::SmsIrError.crate::result::SmsIrResult: Represents the status, message, and optional data returned from API calls.crate::error::SmsIrError: Comprehensive error type covering HTTP, JSON, timeout, API, and unexpected errors, using idiomatic Rust error handling.
§Usage Example
§Example: Get Credit
use smsir_rust::{service::SmsIrServiceBuilder,error::SmsIrError};
#[tokio::main]
async fn main() -> Result<(), SmsIrError> {
let service = SmsIrServiceBuilder::new("your_api_key")
.timeout(std::time::Duration::from_secs(10))
.build()?;
let result = service.get_credit().await?;
match result.data {
Some(data) => println!("Your credit is: {}", data),
None => println!("No credit data available."),
}
Ok(())
}§Example: Send a Single SMS
use smsir_rust::{service::SmsIrServiceBuilder, error::SmsIrError};
#[tokio::main]
async fn main() -> Result<(), SmsIrError> {
let service = SmsIrServiceBuilder::new("your_api_key").build()?;
// Replace with your sender and receiver numbers
let sender = "Sender number";
let receiver = "Receiver number";
let message = "Message text";
// For single send, use bulk_send with one mobile
let result = service.bulk_send(sender, message, &[receiver.to_string()], None).await?;
match result.data {
Some(data) => println!("Sent successfully: {:?}", data),
None => println!("No response data."),
}
Ok(())
}§Example: Send Verification SMS with Template
use smsir_rust::{service::SmsIrServiceBuilder, error::SmsIrError};
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), SmsIrError> {
let service = SmsIrServiceBuilder::new("your_api_key").build()?;
let receiver = "Receiver number";
let template_id = 100000; // Replace with your template ID
let params = vec![json!({"Code": "12345"})];
let result = service.verify_send(receiver, template_id, ¶ms).await?;
match result.data {
Some(data) => println!("Verification sent: {:?}", data),
None => println!("No response data."),
}
Ok(())
}