class SmsActivate::Client
Constants
- STATUSES
Sets the status of the activation
Public Class Methods
new(api_key)
click to toggle source
Initializes a new SmsActivate
Client
@param [String] api_key The API key, can be obtained at
http://sms-activate.ru/index.php?act=profile
# File lib/sms_activate/client.rb, line 13 def initialize(api_key) @options = { query: { api_key: api_key } } end
Public Instance Methods
get_activation_status(id)
click to toggle source
Returns the activation status
@example
SmsActivate::Client.new('key').get_activation_status(42) => OpenStruct status=:success code="12345"
# File lib/sms_activate/client.rb, line 105 def get_activation_status(id) response = self.class.get('/', query: { action: 'getStatus', id: id }.merge(@options[:query])) check_errors! response case response.parsed_response when 'STATUS_WAIT_CODE' OpenStruct.new(status: :waiting) when 'STATUS_WAIT_RESEND' OpenStruct.new(status: :waiting_for_resend) when 'STATUS_CANCEL' OpenStruct.new(status: :cancelled) when /STATUS_WAIT_RETRY/ OpenStruct.new(status: :waiting_for_code_confirmation, lastcode: response.parsed_response.split(':')[1]) when /STATUS_OK/ OpenStruct.new(status: :success, code: response.parsed_response.split(':')[1]) else raise ServerError('Bad activation response') end end
get_available_services(full = true)
click to toggle source
Returns an amount of available numbers for each service
@param [Boolean] full Whether to include “cost” and “quant” keys
@example
SmsActivate::Client.new('key').get_available_services => {"vk_0"=>{"quant"=>"0", "cost"=>10}, ...} SmsActivate::Client.new('key').get_available_services(false) => {"vk_0"=>"0", "ok_0"=>"42", ...}
# File lib/sms_activate/client.rb, line 28 def get_available_services(full = true) action = full ? 'getNumbersStatus1' : 'getNumbersStatus' response = self.class.get('/', query: { action: action }.merge(@options[:query])) check_errors! response JSON.parse(response.parsed_response) end
get_balance()
click to toggle source
Returns user’s balance in RUB
@example
SmsActivate::Client.new('key').get_balance => 0.0
# File lib/sms_activate/client.rb, line 41 def get_balance response = self.class.get('/', query: { action: 'getBalance' }.merge(@options[:query])) check_errors! response response.parsed_response.split(':')[1].to_f end
obtain_number(service)
click to toggle source
Obtains a number for the given service
@example
SmsActivate::Client.new('key').obtain_number('ya') => OpenStruct id=42 number="+1234567890"
TODO: forward, operator
# File lib/sms_activate/client.rb, line 56 def obtain_number(service) response = self.class.get('/', query: { action: 'getNumber', service: service }.merge(@options[:query])) check_errors! response splitted = response.parsed_response.split(':') OpenStruct.new(id: splitted[1].to_i, number: splitted[2]) end
set_activation_status(id, status)
click to toggle source
@example
SmsActivate::Client.new('key').set_activation_status(42, :sms_sent) => OpenStruct status=:confirmed
TODO: forward
# File lib/sms_activate/client.rb, line 80 def set_activation_status(id, status) raise BadStatusError unless (status = STATUSES[status]) response = self.class.get('/', query: { action: 'setStatus', id: id, status: status }.merge(@options[:query])) check_errors! response case response.parsed_response when 'ACCESS_READY' OpenStruct.new(status: :confirmed) when 'ACCESS_RETRY_GET' OpenStruct.new(status: :retrying) when 'ACCESS_ACTIVATION' OpenStruct.new(status: :activated) when 'ACCESS_CANCEL' OpenStruct.new(status: :cancelled) else raise ServerError('Bad activation response') end end
Private Instance Methods
check_errors!(response)
click to toggle source
# File lib/sms_activate/client.rb, line 127 def check_errors!(response) raise ServerError(response.parsed_response) if response.code != 200 case response.parsed_response when 'NO_KEY' raise NoKeyError when 'BAD_KEY' raise BadKeyError when 'NO_ACTION' raise NoActionError when 'BAD_ACTION' raise BadActionError when 'ERROR_SQL' raise SQLError when 'NO_BALANCE' raise NoBalanceError when 'NO_NUMBERS' raise NoNumbersError when 'BAD_SERVICE' raise BadServiceError when 'NO_ACTIVATION' raise NoActivationError when 'BAD_STATUS' raise BadStatusError else end end