module TurboSMS

Constants

VERSION

Attributes

default_options[RW]

Public Class Methods

balance() click to toggle source
# File lib/turbosms/api.rb, line 3
def balance
  authorize unless authorized?
  authorised_call(:get_credit_balance).to_f
end
get_message_status(message_id) click to toggle source
# File lib/turbosms/api.rb, line 8
def get_message_status(message_id)
  authorize unless authorized?
  message = { 'MessageId' => message_id }
  authorised_call(:get_message_status, message: message)
end
send_sms(destination, text = nil, sender = nil) click to toggle source
# File lib/turbosms/api.rb, line 14
def send_sms(destination, text = nil, sender = nil)
  authorize unless authorized?
  message = {
    sender:       sender || default_options[:sender],
    destination:  destination,
    text:         text
  }
  result = authorised_call(:send_sms, message: message)
  raise SendingSMSError, result unless result.instance_of?(Array)
  result[1] # message id
end

Private Class Methods

auth_message() click to toggle source
# File lib/turbosms/client.rb, line 18
def auth_message
  keys = [:login, :password]
  default_options.select{|key,_| keys.include? key}
end
authorised_call(method_name, args = {}) click to toggle source
# File lib/turbosms/client.rb, line 30
def authorised_call(method_name, args = {})
  response_key  = "#{method_name}_response".to_sym
  result_key    = "#{method_name}_result".to_sym
  response = client.call(method_name, args.merge(cookies: @cookies))
  result = response.body[response_key][result_key]
  result = result[:result_array] if result.instance_of?(Hash) and !result[:result_array].nil?
  clear_cookies if !result.instance_of?(Array) and result.length == 20 # Ridiculous # Вы не авторизированы
  result
end
authorize() click to toggle source
# File lib/turbosms/client.rb, line 23
def authorize
  response  = client.call(:auth, message: auth_message)
  result    = response.body[:auth_response][:auth_result]
  store_cookies response.http.cookies if (result.length == 27) # Ridiculous # Вы успешно авторизировались
  raise AuthError, result unless authorized?
end
authorized?() click to toggle source
# File lib/turbosms/client.rb, line 14
def authorized?
  !@cookies.nil? and @cookies_expires_at > Time.now
end
clear_cookies() click to toggle source
# File lib/turbosms/client.rb, line 45
def clear_cookies
  @cookies = nil
  @cookies_expires_at = nil
end
client() click to toggle source
# File lib/turbosms/client.rb, line 10
def client
  @client ||= Savon.client(wsdl: default_options[:wsdl], log: false)
end
store_cookies(cookies) click to toggle source
# File lib/turbosms/client.rb, line 40
def store_cookies(cookies)
  @cookies = cookies
  @cookies_expires_at = Time.now + COOKIE_EXPTIRATION_TIMEOUT
end