Skip to content

Releases: svyatov/smsru-ruby

v2.0.1

Choose a tag to compare

@svyatov svyatov released this 31 Jul 14:41
v2.0.1
288d95a

Added

  • Releases are now built and published by GitHub Actions over OIDC, and every published gem carries a Sigstore provenance attestation. Verify one with https://rubygems.org/api/v1/attestations/smsru-ruby-VERSION.json.

Changed

  • Renamed LICENSE.txt to LICENSE. The license text is untouched and the gem is still MIT.
  • Rewrote the README and widened the gemspec summary and description to describe the full API surface.

Full changelog: v2.0.0...v2.0.1

v2.0.0

Choose a tag to compare

@svyatov svyatov released this 31 Jul 13:06
d4be71d

Changed

  • BREAKING: Renamed the gem from smsru_ruby to smsru-ruby for consistency with the -ruby suffix convention. Update your Gemfile (gem "smsru-ruby") and requires (require "smsru-ruby"). The Ruby API is unchanged — the top-level class is still SmsRu.

The previous gem smsru_ruby published a final 1.0.1 with a deprecation notice pointing here.

Install: gem install smsru-ruby · https://rubygems.org/gems/smsru-ruby

v1.0.0

Choose a tag to compare

@svyatov svyatov released this 26 Jun 15:46
81cbdf9

First public release. A Ruby port of the official SMS.ru PHP library covering the
same API, reworked to be idiomatic Ruby. How it differs from the original:

  • Idiomatic, namespaced API instead of flat get_*/add_* methods: account
    reads under client.my (#balance, #limit, #free_limit, #senders),
    credential check via client.auth.ok?, plus client.stoplist,
    client.callbacks, and client.callcheck sub-resources. Keyword arguments for
    every optional send parameter, plus a per-client from default.
  • Typed, immutable Data results that separate operation outcome from
    delivery state: #ok? plus #error_code/#error_text on rejected
    Sms/CostItem entries; #delivered?/#pending?/#failed?/#found? and
    named SmsRu::Statuses constants for the delivery status_code on Status
    and webhook events; #ok?/#ok/#failed collection helpers on SendResult
    and Cost; plus #confirmed? and #available_today. No raw decoded JSON or
    magic numbers.
  • Typed error hierarchy under SmsRu::Error (AuthError,
    InsufficientFundsError, ResponseError, ConnectionError) — errors are
    raised, not returned as status codes you have to inspect.
  • First-class inbound webhooks: SmsRu::Webhook.parse decodes the callback
    POST into typed events (SmsRu::Events::SmsStatus, CallcheckStatus, Test,
    Unknown), and SmsRu::Webhook.valid? verifies the signature.
  • Zero runtime dependencies (Ruby stdlib only, no curl), TLS verified by
    default, with configurable timeout, retries, global test mode, and an
    optional logger.
  • Ships RBS type signatures (sig/) checked at 100% coverage under Steep's
    strict profile and verified against the test suite at runtime (rbs test);
    SMS.ru's loosely-typed JSON is normalized to the declared types at the parse
    boundary, so result objects never surface raw wire values.