class RouteNGNClient::Record

Public Class Methods

new(attributes = {}) click to toggle source
Calls superclass method
# File lib/routengn_client/models/record.rb, line 12
def initialize(attributes = {})
  super
end
values_to_hash(headers, values) click to toggle source
# File lib/routengn_client/models/record.rb, line 183
def self.values_to_hash(headers, values)
  values.each_with_index {| v,i| headers[i] = [headers[i].to_sym, v] }
  Hash[headers]
end

Public Instance Methods

add_response(r) click to toggle source
# File lib/routengn_client/models/record.rb, line 131
def add_response(r)
  return unless r

  self.attributes.responses ||= []
  self.attributes.responses << r
  self.append_log "Sending response code: #{(r.sip_response.blank? || r.sip_response.status_code.blank?) ? 'Unknown' : r.sip_response.status_code}"
  self.append_log "#{r.sip_response.data if r.sip_response}"
end
add_route(route) click to toggle source
# File lib/routengn_client/models/record.rb, line 109
def add_route(route)
  return unless route

  self.append_log "Added route:"
  self.append_log route.to_log, :append_timestamp => false
  self.attributes.routes ||= []
  self.attributes.routes << route
end
add_route_table(route_table) click to toggle source
# File lib/routengn_client/models/record.rb, line 118
def add_route_table(route_table)
  return unless route_table

  self.append_log "Using route_table:"
  self.append_log route_table.to_log, :append_timestamp => false
  self.attributes.route_tables ||= []
  self.attributes.route_tables << route_table
end
append_log(s, options = {}) click to toggle source
# File lib/routengn_client/models/record.rb, line 46
def append_log(s, options = {})
  append_timestamp = options.has_key?(:append_timestamp) ? options[:append_timestamp] : true

  self.attributes.logs ||= []

  if append_timestamp
    age = self.attributes.request ? self.attributes.request.age.round(5) : nil
    self.attributes.logs << "#{age}: #{s}"
  else
    self.attributes.logs << "#{s}"
  end
end
as_cdr(delimiter = ',') click to toggle source
# File lib/routengn_client/models/record.rb, line 179
def as_cdr(delimiter = ',')
  CSV.generate_line self.to_comma, :force_quotes => true, :col_sep => delimiter, :row_sep => nil
end
cache_prep!() click to toggle source
# File lib/routengn_client/models/record.rb, line 168
def cache_prep!
  attrs = Hashie::Mash.new
  attrs.call_detail_record = self.call_detail_record_hash
  attrs.account_id = self.account_id || (self.account.id if self.account)
  attrs.inbound_end_point_group_id = self.inbound_end_point_group.id if self.inbound_end_point_group
  attrs.requested_at_float = self.requested_at_float || (self.request.requested_at_float if self.request)
  attrs.response_code = self.final_response.response_code if self.final_response
  attrs.logs = self.logs
  self.attributes = attrs
end
call_detail_record() click to toggle source
# File lib/routengn_client/models/record.rb, line 30
def call_detail_record
  self.attributes.call_detail_record
end
call_detail_record_hash() click to toggle source
# File lib/routengn_client/models/record.rb, line 34
def call_detail_record_hash
  self.class.values_to_hash(self.to_comma_headers, self.to_comma)
end
create!(attributes = {}, options = {}) click to toggle source
# File lib/routengn_client/models/record.rb, line 16
def create!(attributes = {}, options = {})
  options = options.merge({ :account_id => (self.account_id || (self.account.id if self.account)) })

  attrs = attributes.merge({
            :call_detail_record => (self.call_detail_record || self.call_detail_record_hash),
            :inbound_end_point_group_id => (self.inbound_end_point_group_id || (self.inbound_end_point_group.id if self.inbound_end_point_group)),
            :requested_at_float => (self.requested_at_float || (self.request.requested_at_float if self.request)),
            :response_code => (self.response_code || (self.final_response.response_code if self.final_response)),
            :logs => self.logs
          })

  self.class.create!(attrs, options)
end
destination_code() click to toggle source
# File lib/routengn_client/models/record.rb, line 156
def destination_code
  self.attributes.destination_code
end
final_response() click to toggle source
# File lib/routengn_client/models/record.rb, line 140
def final_response
  self.attributes.responses.blank? ? nil : self.attributes.responses.last
end
final_route_table() click to toggle source
# File lib/routengn_client/models/record.rb, line 127
def final_route_table
  self.attributes.route_tables.blank? ? nil : self.attributes.route_tables.last
end
inbound_rate() click to toggle source
# File lib/routengn_client/models/record.rb, line 160
def inbound_rate
  self.attributes.inbound_rate
end
origination_code() click to toggle source
# File lib/routengn_client/models/record.rb, line 152
def origination_code
  self.attributes.origination_code
end
request() click to toggle source
# File lib/routengn_client/models/record.rb, line 144
def request
  self.attributes.request
end
routes_csvs(delimiter = ';') click to toggle source
# File lib/routengn_client/models/record.rb, line 38
def routes_csvs(delimiter = ';')
  (self.routes || []).map { |r| CSV.generate_line(r.to_comma, :force_quotes => true, :col_sep => delimiter, :quote_char => '\'').strip! }
end
routes_string(delimiter = '|') click to toggle source
# File lib/routengn_client/models/record.rb, line 42
def routes_string(delimiter = '|')
  self.routes_csvs.join(delimiter)
end
set_destination_code(code) click to toggle source
# File lib/routengn_client/models/record.rb, line 94
def set_destination_code(code)
  return unless code

  self.append_log "Using destination_code:"
  self.append_log code.to_log, :append_timestamp => false
  self.attributes.destination_code = code
end
set_inbound_end_point_group(iepg) click to toggle source
# File lib/routengn_client/models/record.rb, line 69
def set_inbound_end_point_group(iepg)
  return unless iepg

  self.append_log "Using inbound_end_point_group:"
  self.append_log iepg.to_log, :append_timestamp => false
  self.attributes.inbound_end_point_group = iepg
  self.attributes.account = iepg.account if iepg
end
set_inbound_rate(rate) click to toggle source
# File lib/routengn_client/models/record.rb, line 78
def set_inbound_rate(rate)
  return unless rate

  self.append_log "Using inbound_rate:"
  self.append_log rate.to_log, :append_timestamp => false
  self.attributes.inbound_rate = rate
end
set_origination_code(code) click to toggle source
# File lib/routengn_client/models/record.rb, line 86
def set_origination_code(code)
  return unless code

  self.append_log "Using origination_code:"
  self.append_log code.to_log, :append_timestamp => false
  self.attributes.origination_code = code
end
set_rate_type(type) click to toggle source
# File lib/routengn_client/models/record.rb, line 102
def set_rate_type(type)
  return unless type

  self.append_log "Using rate_type: #{type}"
  self.attributes.rate_type = type
end
set_request(r) click to toggle source
# File lib/routengn_client/models/record.rb, line 59
def set_request(r)
  return unless r

  self.attributes.request = r
  self.requested_at_float = r.requested_at_float
  self.attributes.sip_request = r.sip_request
  self.append_log "Processing request: #{(r.sip_request.blank? || r.sip_request.method.blank?) ? 'Unknown' : r.sip_request.method} from #{r.peer_ip.blank? ? 'Unknown' : r.peer_ip}"
  self.append_log "#{r.sip_request.data if r.sip_request}"
end
sip_redirector_version() click to toggle source
# File lib/routengn_client/models/record.rb, line 164
def sip_redirector_version
  self.attributes.sip_redirector_version
end
sip_request() click to toggle source
# File lib/routengn_client/models/record.rb, line 148
def sip_request
  self.attributes.sip_request
end