class PanasonicRcs::Rcs
Attributes
connection[R]
response[R]
Public Class Methods
new(connection)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 4 def initialize(connection) @connection = connection end
Public Instance Methods
list_phones()
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 8 def list_phones request = "<?xml version=\"1.0\"?><methodCall><methodName>ipredirect.listPhones</methodName></methodCall>" @response = connection.post(request) fail RcsError.new "System responded with a #{@response.status} status." if @response.status != 200 body = @response.body['methodResponse'] if fault = body['fault'] fault_string = fault['value']['struct']['member'][1]['value']['string'] fail RcsError.new fault_string end body['params']['param']['value']['array']['data']['value'].map {|k| k["string"]} end
phone(raw_mac_addr)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 21 def phone(raw_mac_addr) mac_addr = raw_mac_addr.gsub(/[^[:alnum:]]/, '') body = "<?xml version=\"1.0\"?><methodCall><methodName>ipredirect.getPhone</methodName><params><param><value><string>#{mac_addr}</string></value></param></params></methodCall>" @response = connection.post(body) fail RcsError.new "System responded with a #{@response.status} status." if @response.status != 200 body = @response.body['methodResponse'] if fault = body['fault'] fault_string = fault['value']['struct']['member'][1]['value']['string'] fail RcsError.new fault_string end parse_struct(body['params']['param']['value']['struct']['member']) end
register_phone_with_profile(raw_mac_addr, profile)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 35 def register_phone_with_profile(raw_mac_addr, profile) mac_addr = raw_mac_addr.gsub(/[^[:alnum:]]/, '') body = "<?xml version=\"1.0\"?><methodCall><methodName>ipredirect.registerPhoneWithProfile</methodName><params><param><value><string>#{mac_addr}</string></value></param><param><value><string>#{profile}</string></value></param></params></methodCall>" @response = connection.post(body) fail RcsError.new "System responded with a #{@response.status} status." if @response.status != 200 body = @response.body['methodResponse'] if fault = body['fault'] fault_string = fault['value']['struct']['member'][1]['value']['string'] fail RcsError.new fault_string end body['params']['param']['value']['boolean'] == "1" end
unregister_phone(raw_mac_addr)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 49 def unregister_phone(raw_mac_addr) mac_addr = raw_mac_addr.gsub(/[^[:alnum:]]/, '') body = "<?xml version=\"1.0\"?><methodCall><methodName>ipredirect.unregisterPhone</methodName><params><param><value><string>#{mac_addr}</string></value></param></params></methodCall>" @response = connection.post(body) fail RcsError.new "System responded with a #{@response.status} status." if @response.status != 200 body = @response.body['methodResponse'] if fault = body['fault'] fault_string = fault['value']['struct']['member'][1]['value']['string'] fail RcsError.new fault_string end body['params']['param']['value']['boolean'] == "1" end
Private Instance Methods
parse_struct(struct)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 65 def parse_struct(struct) struct.each_with_object({}) {|member, obj| obj[member['name']] = parse_value(member['value'].keys.first, member['value'].values.first)} end
parse_value(value_type, value)
click to toggle source
# File lib/panasonic_rcs/rcs.rb, line 69 def parse_value(value_type, value) type_conversion = {'string' => ->(x){x}, 'dateTime.iso8601' => ->(x) {DateTime.iso8601(x)}} translator = type_conversion.fetch(value_type) { ->(x) {x} } translator.call(value) end