class RubyAsterisk::ResponseParser

Class for parsing response coming from Asterisk

Public Class Methods

parse(raw_response, type) click to toggle source
# File lib/ruby-asterisk/response_parser.rb, line 10
def self.parse(raw_response, type)
  if PARSE_DATA.include?(type)
    self._parse_objects(raw_response, PARSE_DATA[type])
  else
    raw_response
  end
end

Protected Class Methods

_add_status(exten_array) click to toggle source
# File lib/ruby-asterisk/response_parser.rb, line 20
def self._add_status(exten_array)
  exten_array.each do |hint|
    hint["DescriptiveStatus"] = DESCRIPTIVE_STATUS[hint["Status"]]
  end
  exten_array
end
_parse_objects(response, parse_params) click to toggle source
# File lib/ruby-asterisk/response_parser.rb, line 27
def self._parse_objects(response, parse_params)
  object_array = []
  object_regex = Regexp.new(/#{parse_params[:search_for]}\n(.*?)\n\n/m)
  response.scan(object_regex) do |match|
    object = {}
    match[0].split(/\n/).each do |line|
      tokens = line.split(':', 2)
      object[tokens[0].strip]=tokens[1].strip unless tokens[1].nil?
    end
    object_array << object unless object.empty?
  end
  object_array = _add_status(object_array) if parse_params[:symbol].eql?(:hints)
  { parse_params[:symbol] => object_array }
end