class Elastix::Extension

Attributes

devinfo_secret[RW]
extension[RW]
name[RW]
outboundcid[RW]
record_in[RW]
record_out[RW]
sipname[RW]

Public Class Methods

all() click to toggle source
# File lib/elastix/extension.rb, line 48
def self.all
  Sip.uniq.pluck(:id).map do |extension|
    get_extension_object(extension) if exist?(extension)
  end
end
create(params) click to toggle source
# File lib/elastix/extension.rb, line 42
def self.create params
  e = Extension.new(params)
  e.save
  e
end
find(extension) click to toggle source
# File lib/elastix/extension.rb, line 38
def self.find extension
 get_extension_object(extension) if exist?(extension)
end
new(params) click to toggle source
# File lib/elastix/extension.rb, line 5
def initialize params
  params.each_pair{|key,value| instance_variable_set "@#{key}", value}
end

Private Class Methods

exist?(extension) click to toggle source
# File lib/elastix/extension.rb, line 106
def self.exist? extension
  !!Sip.find_by_id(extension)
end
get_extension_attributes(extension) click to toggle source

TODO make it easier to add fields. Right now it’s just hardcoded what is returned

also it looks terrible.
# File lib/elastix/extension.rb, line 86
def self.get_extension_attributes extension
  secret_record = Sip.where(id: extension, keyword: "secret").first
  record_in_record = Sip.where(id: extension, keyword: "record_in").first
  record_out_record = Sip.where(id: extension, keyword: "record_out").first
  secret = secret_record ? secret_record.data : nil
  record_in = record_in_record ? record_in_record.data : nil
  record_out = record_out_record ? record_out_record.data : nil

  user_fields = User.find_by_extension(extension)
  {
    extension: extension, 
    name: (user_fields.name if user_fields), 
    sipname: (user_fields.sipname if user_fields), 
    outboundcid: (user_fields.outboundcid if user_fields), 
    devinfo_secret: secret,
    record_in: record_in,
    record_out: record_out
  }
end
get_extension_display_page(extension) click to toggle source
# File lib/elastix/extension.rb, line 80
def self.get_extension_display_page(extension)
  @@elastix.get "#{@@base_address}/config.php?type=setup&display=extensions&extdisplay=#{extension}"
end
get_extension_object(extension) click to toggle source
# File lib/elastix/extension.rb, line 76
def self.get_extension_object(extension)
  Extension.new(get_extension_attributes(extension))
end

Public Instance Methods

==(extension) click to toggle source
# File lib/elastix/extension.rb, line 29
def == extension
  self.to_hash == extension.to_hash
end
destroy() click to toggle source
# File lib/elastix/extension.rb, line 9
def destroy
  @@elastix.get("#{@@base_address}/config.php?type=setup&display=extensions&extdisplay=#{self.extension}&action=del")
  Base.reload
end
save() click to toggle source
# File lib/elastix/extension.rb, line 14
def save
  if Extension.exist? extension
    update_extension_object
  else
    new_extension_object
  end
  Base.reload
end
to_hash() click to toggle source
# File lib/elastix/extension.rb, line 33
def to_hash
  Hash[self.instance_variables.map{|var| [var.to_s.delete("@"), self.instance_variable_get(var)]}]
end
update_attributes(params) click to toggle source
# File lib/elastix/extension.rb, line 23
def update_attributes params
  params.each_pair{|key,value| instance_variable_set "@#{key}", value}
  update_extension_object
  Base.reload
end

Private Instance Methods

new_extension_object() click to toggle source
# File lib/elastix/extension.rb, line 60
def new_extension_object
  #This is necessary for new objects. It would be nice to figure out why.
  page = @@elastix.get("#{@@base_address}/index.php?menu=pbxconfig")
  page.encoding = "utf-8"
  form = page.form("frm_extensions")
  page = form.submit(form.button_with("Submit"))
  update_and_submit_form(page, self.to_hash)
end
update_and_submit_form(page, params) click to toggle source
# File lib/elastix/extension.rb, line 69
def update_and_submit_form(page, params)
  form = page.form("frm_extensions")
  form.encoding = "utf-8"
  params.each{|key,value| form[key.to_s] = value unless value.nil?}
  @@elastix.submit(form, form.button_with("Submit"))
end
update_extension_object() click to toggle source
# File lib/elastix/extension.rb, line 55
def update_extension_object
  page = Extension.get_extension_display_page(self.extension)
  update_and_submit_form(page, self.to_hash)
end