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