class AnySMS::Backend::Smsru
Constants
- API_STATUS_CODE
- API_URL
Public Class Methods
new(api_id:)
click to toggle source
# File lib/any_sms/backend/smsru.rb, line 12 def initialize(api_id:) @api_id = api_id validate_api_id end
Public Instance Methods
send_sms(phone, sms_text, _args = {})
click to toggle source
# File lib/any_sms/backend/smsru.rb, line 17 def send_sms(phone, sms_text, _args = {}) data = parse(request_api(to: phone, text: sms_text)) case data[:status] when API_STATUS_CODE[:success] respond_with_status :success else respond_with_status "unhandled_status_#{data[:status]}".to_sym, meta: { error: "Error, code: #{data[:status]}" } end rescue StandardError => e respond_with_status :runtime_error, meta: { error: e } end
Private Instance Methods
parse(response)
click to toggle source
# File lib/any_sms/backend/smsru.rb, line 45 def parse(response) status, sms_id, balance = response.strip.split("\n") status = status.to_i balance = balance.split("=").last.to_d if balance response = { status: status } response[:balance] = balance if balance response[:sms_id] = sms_id if sms_id response end
request_api(params = {})
click to toggle source
# File lib/any_sms/backend/smsru.rb, line 40 def request_api(params = {}) params = params.merge(api_id: @api_id) Net::HTTP.post_form(URI.parse(API_URL), params).body end
validate_api_id()
click to toggle source
# File lib/any_sms/backend/smsru.rb, line 33 def validate_api_id raise ArgumentError, "Your api_id is not set" if @api_id.nil? return if @api_id =~ /\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/ raise ArgumentError, "Your api_id has invalid format" end