Expand description
Typed Rust client for the SMS.RU HTTP API.
This crate is implemented in milestones (see PLANS.md). The public API is
still evolving, but the design follows SPEC.md: a domain layer of strong
types, a transport layer for wire-format quirks, and a small client layer
orchestrating requests.
use smsru::{
Auth, CheckStatus, MessageText, RawPhoneNumber, SendOptions, SendSms, SmsId, SmsRuClient,
};
#[tokio::main]
async fn main() -> Result<(), smsru::SmsRuError> {
let client = SmsRuClient::new(Auth::api_id("...")?);
let phone = RawPhoneNumber::new("+79251234567")?;
let msg = MessageText::new("hello")?;
let request = SendSms::to_many(vec![phone], msg, SendOptions::default())?;
let _resp = client.send_sms(request).await?;
let status_req = CheckStatus::one(SmsId::new("000000-000001")?);
let _status = client.check_status(status_req).await?;
Ok(())
}Re-exports§
pub use client::Auth;pub use client::SmsRuClient;pub use client::SmsRuClientBuilder;pub use client::SmsRuError;pub use domain::ApiId;pub use domain::CheckStatus;pub use domain::CheckStatusResponse;pub use domain::JsonMode;pub use domain::KnownStatusCode;pub use domain::Login;pub use domain::MessageText;pub use domain::PartnerId;pub use domain::Password;pub use domain::PhoneNumber;pub use domain::RawPhoneNumber;pub use domain::SendOptions;pub use domain::SendSms;pub use domain::SendSmsResponse;pub use domain::SenderId;pub use domain::SmsId;pub use domain::SmsResult;pub use domain::SmsStatusResult;pub use domain::Status;pub use domain::StatusCode;pub use domain::TtlMinutes;pub use domain::UnixTimestamp;pub use domain::ValidationError;