class ActiveSMS::Backend::Smsru

Constants

API_STATUS_CODE
API_URL

Public Class Methods

new(params = {}) click to toggle source
# File lib/active_sms/backend/smsru.rb, line 12
def initialize(params = {})
  @api_id = params.delete(:api_id)
  validate_api_id
end

Public Instance Methods

send_sms(phone, sms_text) click to toggle source
# File lib/active_sms/backend/smsru.rb, line 17
def send_sms(phone, sms_text)
  response = request_api(to: phone, text: sms_text)
  data = parse(response)

  case data[:status]
  when API_STATUS_CODE[:success]
    respond_with_status :success
  else
    respond_with_status "unhandled_status_#{data[:status]}".to_sym
  end
end

Private Instance Methods

parse(response) click to toggle source
# File lib/active_sms/backend/smsru.rb, line 43
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/active_sms/backend/smsru.rb, line 38
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/active_sms/backend/smsru.rb, line 31
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