Expand description
Typed Rust client for the SMS.RU HTTP API.
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, CheckCost, CheckCostOptions, 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?;
let cost_req = CheckCost::to_many(
vec![RawPhoneNumber::new("+79251234567")?],
MessageText::new("hello")?,
CheckCostOptions::default(),
)?;
let _cost = client.check_cost(cost_req).await?;
Ok(())
}Re-exports§
pub use client::Auth;pub use client::SmsRuClient;pub use client::SmsRuClientBuilder;pub use client::SmsRuError;pub use domain::AddCallback;pub use domain::AddStoplistEntry;pub use domain::ApiId;pub use domain::BalanceResponse;pub use domain::CallCheckId;pub use domain::CallCheckStatusCode;pub use domain::CallbackUrl;pub use domain::CallbacksResponse;pub use domain::CheckCallAuthStatus;pub use domain::CheckCallAuthStatusOptions;pub use domain::CheckCallAuthStatusResponse;pub use domain::CheckCost;pub use domain::CheckCostOptions;pub use domain::CheckCostResponse;pub use domain::CheckStatus;pub use domain::CheckStatusResponse;pub use domain::FreeUsageResponse;pub use domain::JsonMode;pub use domain::KnownCallCheckStatusCode;pub use domain::KnownStatusCode;pub use domain::LimitUsageResponse;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::RemoveCallback;pub use domain::RemoveStoplistEntry;pub use domain::SendOptions;pub use domain::SendSms;pub use domain::SendSmsResponse;pub use domain::SenderId;pub use domain::SendersResponse;pub use domain::SmsCostResult;pub use domain::SmsId;pub use domain::SmsResult;pub use domain::SmsStatusResult;pub use domain::StartCallAuth;pub use domain::StartCallAuthOptions;pub use domain::StartCallAuthResponse;pub use domain::Status;pub use domain::StatusCode;pub use domain::StatusOnlyResponse;pub use domain::StoplistResponse;pub use domain::StoplistText;pub use domain::TtlMinutes;pub use domain::UnixTimestamp;pub use domain::ValidationError;