class TMAPI::Telephony
TaxiMaster Telephony
API
Attributes
logger[RW]
Public Class Methods
new(url, key, opts = {})
click to toggle source
# File lib/tmapi/telephony.rb, line 12 def initialize(url, key, opts = {}) @url = url @key = key @verify_ssl = opts[:ssl] || true @logger = TMAPI::Telephony.logger || Logger.new(STDOUT) @debug = opts[:debug] || false end
Public Instance Methods
change_order_state(order_id, state)
click to toggle source
# File lib/tmapi/telephony.rb, line 20 def change_order_state(order_id, state) params = { order_id: order_id, need_state: state } params[:signature] = signature(params) opts = { body: params, verify: @verify_ssl, format: :plain } response = HTTParty.post("#{@url}/change_order_state", opts) @logger.debug(response) if @debug parse_change_order_state(response, order_id) end
Private Instance Methods
inspect(data)
click to toggle source
# File lib/tmapi/telephony.rb, line 54 def inspect(data) data.each_with_object({}) do |elem, hash| hash[elem.name.downcase.to_sym] = if elem.elements.any? inspect(elem.elements) else elem.text end end end
parse_change_order_state(response, order_id)
click to toggle source
# File lib/tmapi/telephony.rb, line 64 def parse_change_order_state(response, order_id) data = Nokogiri::XML(response.body).root return {} unless data parsed_response = inspect(data.elements) case parsed_response[:code] when '100' raise OrderNotFound.new, "Order ID #{order_id} not found" when '101' raise FailedRequirements.new, "Can't change state of order ID #{order_id} due to requirements" end parsed_response[:data] end
signature(params)
click to toggle source
# File lib/tmapi/telephony.rb, line 50 def signature(params) Digest::MD5.hexdigest(url_params(params) + @key) end
url_params(params)
click to toggle source
# File lib/tmapi/telephony.rb, line 46 def url_params(params) URI.encode_www_form(params) end