Skip to main content

SmsDev

Struct SmsDev 

Source
pub struct SmsDev { /* private fields */ }
Expand description

The primary entry-point for interacting with the SMSDev API.

§Example

use smsdev::{SmsDev, models::SendSmsRequest};

#[tokio::main]
async fn main() -> smsdev::Result<()> {
    let client = SmsDev::new("YOUR_API_KEY");

    let req = SendSmsRequest::new("YOUR_API_KEY", 5511988887777, "Hello from Rust!");
    let results = client.send_sms(vec![req]).await?;

    for r in &results {
        println!("Sent! Message ID: {}", r.id);
    }
    Ok(())
}

Implementations§

Source§

impl SmsDev

Source

pub fn new(api_key: impl Into<String>) -> Self

Create a new SmsDev client with the given API key.

Source

pub async fn send_sms( &self, messages: Vec<SendSmsRequest>, ) -> Result<Vec<SendSmsResponse>>

Send one or more SMS messages.

Each element in messages targets a single recipient. The API accepts batches, so you can pass as many as needed in one call.

Returns one SendSmsResponse per message, in the same order.

§Example
let client = SmsDev::new("YOUR_API_KEY");

let messages = vec![
    SendSmsRequest::new("YOUR_API_KEY", 5511988887777, "Hello Alice!"),
    SendSmsRequest::new("YOUR_API_KEY", 5521977776666, "Hello Bob!"),
];

let results = client.send_sms(messages).await?;
for r in results {
    println!("id={} status={}", r.id, r.status);
}
Source

pub async fn send_one(&self, message: SendSmsRequest) -> Result<SendSmsResponse>

Send a single SMS message (convenience wrapper around [send_sms]).

§Example
let client = SmsDev::new("YOUR_API_KEY");
let req = SendSmsRequest::new("YOUR_API_KEY", 5511988887777, "Hi!")
    .refer("order-42")
    .schedule_date("25/12/2025")
    .schedule_time("09:00");
let result = client.send_one(req).await?;
println!("Queued with id={}", result.id);
Source

pub async fn cancel(&self, ids: Vec<u64>) -> Result<Vec<CancelResponse>>

Cancel one or more scheduled messages.

§Example
let client = SmsDev::new("YOUR_API_KEY");
let results = client.cancel(vec![637849052, 637849053]).await?;
for r in results {
    println!("Cancelled id={}: {}", r.id, r.description);
}
Source

pub async fn inbox(&self, req: InboxRequest) -> Result<Vec<InboxMessage>>

Query the inbox for received (MO) messages.

§Example – fetch only new messages
let client = SmsDev::new("YOUR_API_KEY");
let inbox = client.inbox(InboxRequest::new("YOUR_API_KEY")).await?;
for msg in inbox {
    println!("[{}] {}: {}", msg.data_read, msg.phone, msg.description);
}
Source

pub async fn dlr(&self, ids: Vec<u64>) -> Result<Vec<DlrResponse>>

Query delivery status (DLR) for one or more sent messages.

§Example
let client = SmsDev::new("YOUR_API_KEY");
let statuses = client.dlr(vec![637849052]).await?;
for s in statuses {
    println!("operator={:?} status={}", s.operator, s.description);
}
Source

pub async fn balance(&self) -> Result<BalanceResponse>

Retrieve the account’s current SMS credit balance.

§Example
let client = SmsDev::new("YOUR_API_KEY");
let balance = client.balance().await?;
println!("Credits remaining: {}", balance.sms_balance);
Source

pub async fn report(&self, req: ReportRequest) -> Result<ReportResponse>

Fetch a total usage report, optionally filtered by date range.

§Example
let client = SmsDev::new("YOUR_API_KEY");
let report = client
    .report(
        ReportRequest::new("YOUR_API_KEY")
            .date_from("01/01/2025")
            .date_to("31/01/2025"),
    )
    .await?;
println!(
    "Sent={} Received={} Credits={}",
    report.sent, report.received, report.credits_used
);

Trait Implementations§

Source§

impl Clone for SmsDev

Source§

fn clone(&self) -> SmsDev

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SmsDev

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more