lib/freebox_api.rb in freebox_api-0.0.1 vs lib/freebox_api.rb in freebox_api-0.0.2

- old
+ new

@@ -1,120 +1,8 @@ -require 'rest_client' -require 'json' - module FreeboxApi - - class Freebox - - attr_reader :app_token, :app_id, :app_name, :app_version, :device_name, :base_url - - def initialize(app_token, app_id, app_name, app_version, device_name, base_url = 'http://mafreebox.free.fr') - @app_id = app_id - @app_name = app_name - @app_version = app_version - @device_name = device_name - @app_token = app_token - @base_url = base_url - end - - def self.app_token(app_id, app_name, app_version, device_name) - JSON.parse(RestClient.post( - "#{@base_url}/api/v1/login/authorize", - { - :app_id => app_id, - :app_name => app_name, - :app_version => app_version, - :device_name => device_name, - }.to_json, - :content_type => :json, - :accept => :json - ))['result']['app_token'] - end - - def challenge - JSON.parse(RestClient.get("#{@base_url}/api/v1/login/"))['result']['challenge'] - end - - def password - Digest::HMAC.hexdigest(challenge, @app_token, Digest::SHA1) - end - - def session_token - JSON.parse( - RestClient.post( - "#{@base_url}/api/v1/login/session/", - { - :app_id => @app_id, - :password => password, - }.to_json, - :content_type => :json, - :accept => :json - ) - )['result']['session_token'] - end - - def interfaces - JSON.parse( - RestClient.get( - "#{@base_url}/api/v1/lan/browser/interfaces", - :'X_Fbx_App_Auth' => session_token - ) - )['result'].collect { |interface| - FreeboxApi::Resources::Interface.new(interface['name'], interface['host_count'], self) - } - end - - def lan_hosts - interfaces.collect { |interface| - interface.lan_hosts - }.flatten - end - - def static_leases - JSON.parse( - RestClient.get( - "#{@base_url}/api/v1/dhcp/static_lease/", - :'X_Fbx_App_Auth' => session_token - ) - )['result'].collect { |static_lease| - FreeboxApi::Resources::StaticLease.new( - static_lease['id'], - static_lease['mac'], - static_lease['comment'], - static_lease['hostname'], - static_lease['ip'], - lan_hosts.select { |lan_host| lan_host.id == static_lease['host']['id'] }, - self - ) - } - end - - def redirs - JSON.parse( - RestClient.get( - "#{@base_url}/api/v1/fw/redir/", - :'X_Fbx_App_Auth' => session_token - ) - )['result'].collect { |redir| - FreeboxApi::Resources::Redir.new( - redir['id'], - redir['enabled'], - redir['ip_proto'], - redir['wan_port_start'], - redir['wan_port_end'], - redir['lan_ip'], - redir['lan_port'], - redir['hostname'], - lan_hosts.select { |lan_host| lan_host.id == redir['host']['id'] }, - redir['comment'], - self - ) - } - end - - end - end +require 'freebox_api/freebox' +require 'freebox_api/session' require 'freebox_api/version' resource_files = Dir[File.expand_path("#{File.dirname(__FILE__)}/freebox_api/resources/*.rb", __FILE__)] resource_files.each { |f| require f }