class Lifecell::API
Constants
- VERSION
Attributes
log[RW]
Default logger for all Lifecell::API
instances
Lifecell::API.log = Logger.new($stderr)
log[W]
Sets the logger
used by this instance of Lifecell::API
sub_id[RW]
token[RW]
Public Class Methods
new(params = {})
click to toggle source
Create a new API
object using the given parameters.
Required parameters¶ ↑
-
:msisdn
- telephone number in format '38063*******' -
:password
- super password -
:lang
- 'uk', 'ru' or 'en'
# File lib/lifecell_api.rb, line 78 def initialize(params = {}) @msisdn = params.delete(:msisdn) @password = params.delete(:password) @lang = params.delete(:lang) || 'uk' @log = nil @os_type = 'ANDROID' @api_url = 'https://api.life.com.ua/mobile/' @access_key_code = '7' @application_key = 'E6j_$4UnR_)0b' end
Public Instance Methods
available_tariffs()
click to toggle source
# File lib/lifecell_api/methods.rb, line 88 def available_tariffs request( 'getAvailableTariffs', base_api_parameters ) end
balances()
click to toggle source
# File lib/lifecell_api/methods.rb, line 95 def balances request( 'getBalances', base_api_parameters ) end
call_me_back(msisdn_b)
click to toggle source
# File lib/lifecell_api/methods.rb, line 116 def call_me_back(msisdn_b) request( 'callMeBack', base_api_parameters.merge(msisdnB: msisdn_b) ) end
change_language(new_language_id)
click to toggle source
# File lib/lifecell_api/methods.rb, line 109 def change_language(new_language_id) request( 'changeLanguage', base_api_parameters.merge(newLanguageId: new_language_id) ) end
change_super_password(old_password, new_password)
click to toggle source
# File lib/lifecell_api/methods.rb, line 48 def change_super_password(old_password, new_password) request( 'changeSuperPassword', base_api_parameters.merge( oldPassword: old_password, newPassword: new_password ) ) end
expenses_summary(month_period)
click to toggle source
Summary expenses report for calendar month month_period
month_period
- A string like 'yyyy-MM' that represent month of year
# File lib/lifecell_api/methods.rb, line 145 def expenses_summary(month_period) request( 'getExpensesSummary', base_api_parameters.merge(monthPeriod: month_period) ) end
languages()
click to toggle source
# File lib/lifecell_api/methods.rb, line 102 def languages request( 'getLanguages', base_api_parameters ) end
log()
click to toggle source
The current logger. If no logger has been set Lifecell::API.log
is used.
# File lib/lifecell_api.rb, line 94 def log @log ||= Lifecell::API.log end
payments_history(month_period)
click to toggle source
Payments history for calendar month month_period
month_period
- A string like 'yyyy-MM' that represent month of year
# File lib/lifecell_api/methods.rb, line 134 def payments_history(month_period) request( 'getPaymentsHistory', base_api_parameters.merge(monthPeriod: month_period) ) end
refill_balance_by_scratch_card(secret_code)
click to toggle source
# File lib/lifecell_api/methods.rb, line 152 def refill_balance_by_scratch_card(secret_code) request( 'refillBalanceByScratchCard', base_api_parameters.merge(secretCode: secret_code) ) end
request(method, params = {})
click to toggle source
# File lib/lifecell_api.rb, line 102 def request(method, params = {}) params = { accessKeyCode: @access_key_code }.merge(params) url = create_signed_url(method, params) log&.debug("[#{method}] request: #{url}") response = response(url) raise StatusError, "Received status code #{response.code} from server" unless response.code == '200' log&.debug("[#{method}] response: #{response.body}") xml = parse_xml(response.body) return xml if xml['responseCode'] == '0' raise_error!(xml) end
request_balance_transfer(msisdn_b)
click to toggle source
# File lib/lifecell_api/methods.rb, line 123 def request_balance_transfer(msisdn_b) request( 'requestBalanceTransfer', base_api_parameters.merge(msisdnB: msisdn_b) ) end
services()
click to toggle source
# File lib/lifecell_api/methods.rb, line 84 def services request('getServices', base_api_parameters) end
sign_in()
click to toggle source
# File lib/lifecell_api/methods.rb, line 33 def sign_in xml = request('signIn', msisdn: @msisdn, superPassword: @password) @token = xml['token'] @sub_id = xml['subId'] xml end
sign_out()
click to toggle source
# File lib/lifecell_api/methods.rb, line 40 def sign_out request( 'signOut', msisdn: @msisdn, subId: @sub_id ) end
summary_data()
click to toggle source
# File lib/lifecell_api/methods.rb, line 77 def summary_data request( 'getSummaryData', base_api_parameters ) end
ui_properties(language_id, last_date_update)
click to toggle source
last_date_update
is DateTime object
# File lib/lifecell_api/methods.rb, line 67 def ui_properties(language_id, last_date_update) request( 'getUIProperties', accessKeyCode: @access_key_code, languageId: language_id, osType: @os_type, lastDateUpdate: last_date_update ) end
Private Instance Methods
base_api_parameters()
click to toggle source
# File lib/lifecell_api.rb, line 170 def base_api_parameters { msisdn: @msisdn, languageId: @lang, osType: @os_type, token: @token } end
create_param(params)
click to toggle source
Returns a string representation of the receiver suitable for use as a URL query string
# File lib/lifecell_api.rb, line 155 def create_param(params) params.map do |key, value| "#{urlencode(key)}=#{urlencode(value)}" end.sort * '&' end
create_signed_url(method, params)
click to toggle source
# File lib/lifecell_api.rb, line 139 def create_signed_url(method, params) query = create_param(params) str = method + '?' + query + '&signature=' digest = OpenSSL::Digest.new('sha1') hash = OpenSSL::HMAC.digest(digest, @application_key, str) hash = Base64.encode64(hash).chomp str += urlencode(hash) @api_url + str end
parse_xml(str)
click to toggle source
# File lib/lifecell_api.rb, line 166 def parse_xml(str) XmlSimple.xml_in(str, 'ForceArray' => false) end
raise_error!(xml)
click to toggle source
# File lib/lifecell_api.rb, line 122 def raise_error!(xml) raise MethodError, "Unknown error: #{xml}" unless xml['responseCode'] error_message = Lifecell::RESPONSE_CODES[xml['responseCode']] error_message ||= "Unknown error code #{xml['responseCode']}" raise MethodError, error_message end
response(url)
click to toggle source
# File lib/lifecell_api.rb, line 130 def response(url) uri = URI(url) request = Net::HTTP::Get.new(uri.request_uri) Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(request) end end
urlencode(str)
click to toggle source
URL-encode a string
# File lib/lifecell_api.rb, line 162 def urlencode(str) CGI.escape(str.to_s) end