Class: FreeboxApi::Freebox
- Inherits:
-
Hash
- Object
- Hash
- FreeboxApi::Freebox
- Defined in:
- lib/freebox_api/freebox.rb
Instance Attribute Summary collapse
-
#logger ⇒ Object
Returns the value of attribute logger.
Instance Method Summary collapse
- #authorize(token_request) ⇒ Object
- #build_url(api_url) ⇒ Object
- #challenge ⇒ Object
- #discover ⇒ Object
- #http_call(http_method, path, params = nil, session = nil) ⇒ Object
-
#initialize(hash = {}, logger = nil) ⇒ Freebox
constructor
A new instance of Freebox.
- #process_data(response) ⇒ Object
- #track_auth(track_id) ⇒ Object
Constructor Details
#initialize(hash = {}, logger = nil) ⇒ Freebox
Returns a new instance of Freebox.
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/freebox_api/freebox.rb', line 11 def initialize(hash = {}, logger = nil) self[:freebox_ip] = hash[:freebox_ip] ? hash[:freebox_ip] : 'mafreebox.free.fr' self[:freebox_port] = hash[:freebox_port] ? hash[:freebox_port] : '80' @client = RestClient::Resource.new("http://#{self[:freebox_ip]}:#{self[:freebox_port]}") self[:uid] = discover['uid'] self[:device_name] = discover['device_name'] self[:api_version] = discover['api_version'] self[:api_base_url] = discover['api_base_url'] self[:device_type] = discover['device_type'] self.logger = logger end |
Instance Attribute Details
#logger ⇒ Object
Returns the value of attribute logger.
9 10 11 |
# File 'lib/freebox_api/freebox.rb', line 9 def logger @logger end |
Instance Method Details
#authorize(token_request) ⇒ Object
40 41 42 |
# File 'lib/freebox_api/freebox.rb', line 40 def (token_request) http_call('post', '/login/authorize/', token_request) end |
#build_url(api_url) ⇒ Object
36 37 38 |
# File 'lib/freebox_api/freebox.rb', line 36 def build_url(api_url) "#{self[:api_base_url]}v#{self[:api_version].split('.')[0]}#{api_url}" end |
#challenge ⇒ Object
48 49 50 |
# File 'lib/freebox_api/freebox.rb', line 48 def challenge http_call('get', '/login/')['challenge'] end |
#discover ⇒ Object
31 32 33 34 |
# File 'lib/freebox_api/freebox.rb', line 31 def discover args = ['get'] @discover ||= JSON.parse(@client['/api_version'].send(*args)) end |
#http_call(http_method, path, params = nil, session = nil) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/freebox_api/freebox.rb', line 52 def http_call(http_method, path, params = nil, session = nil) headers = {} args = [http_method] if %w[post put].include?(http_method.to_s) args << params.to_json else headers[:params] = params if params end headers[:'X_Fbx_App_Auth'] = session.session_token if session logger.info "#{http_method.upcase} #{path}" logger.debug "Params: #{params.inspect}" logger.debug "Headers: #{headers.inspect}" args << headers if headers process_data(@client[build_url(path)].send(*args))['result'] end |
#process_data(response) ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/freebox_api/freebox.rb', line 70 def process_data(response) data = begin JSON.parse(response.body) rescue JSON::ParserError response.body end logger.debug "Returned data: #{data.inspect}" return data end |
#track_auth(track_id) ⇒ Object
44 45 46 |
# File 'lib/freebox_api/freebox.rb', line 44 def track_auth(track_id) http_call('get', "/login/authorize/#{track_id}") end |