class SMSCentre::API
Public Class Methods
new(login, password)
click to toggle source
# File lib/sms_centre/api.rb, line 3 def initialize(login, password) @provider = Provider.new(login, password) end
Public Instance Methods
balance()
click to toggle source
# File lib/sms_centre/api.rb, line 7 def balance resp = @provider.request(path: '/sys/balance.php') if resp.key?("balance") resp["balance"] else raise ServerError.new("unexpected response: 'balance' key not found") end end
broadcast(phones, message, opts = {})
click to toggle source
# File lib/sms_centre/api.rb, line 17 def broadcast(phones, message, opts = {}) opts = {path: '/sys/send.php'}.merge(opts) phones = [phones] if phones.kind_of? String if phones.length > SMSCentre.configuration.max_phones_per_request raise ClientError.new("too much phone numbers per request") end params = { phones: phones.join(','), mes: message, err: 1, # Show errors for each phone cost: 3 # Return request cost and result balance } params.merge!(opts.delete(:params) || {}) resp = @provider.request(opts.merge(params: params)) if resp.key?("error_code") global_error = case resp["error_code"] when ERROR_IMPOSSIBLE MESSAGE_STATUS_ERROR_IMPOSSIBLE when ERROR_PHONE_FORMAT MESSAGE_STATUS_ERROR_PHONE_FORMAT when ERROR_FORBIDDEN_MESSAGE MESSAGE_STATUS_ERROR_FORBIDDEN_MESSAGE when ERROR_BALANCE MESSAGE_STATUS_ERROR_BALANCE else raise ClientError.new(resp['error_code']) end errors = {} phones.each { |p| errors[p] = global_error } Result.new(errors, resp['id']) else Result.new(resp['errors'] || {}, resp['id'], cost: resp['cost'], balance: resp['balance']) end end
status(message_id, phone, opts = {})
click to toggle source
# File lib/sms_centre/api.rb, line 59 def status(message_id, phone, opts = {}) opts = {path: '/sys/status.php', all: 2}.merge(opts) params = { phone: phone, id: message_id } params.merge!(opts.delete(:params) || {}) resp = @provider.request(opts.merge(params: params)) if resp.key?('error_code') raise ClientError.new(resp['error_code']) end Status.new(phone, message_id, resp["status"], err: resp["err"], last_date: resp["last_date"], last_timestamp: resp["last_timestamp"], ) end