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