chrisrutz
2/21/2012 - 9:26 AM

Magento API simple client in Ruby

Magento API simple client in Ruby

# Copyright Camptocamp SA 2012
# License: AGPL (GNU Affero General Public License)[http://www.gnu.org/licenses/agpl-3.0.txt]
# Author Guewen Baconnier

require "xmlrpc/client"
require 'pp'
XMLRPC::Config::ENABLE_NIL_PARSER = true
XMLRPC::Config::ENABLE_NIL_CREATE = true

class MagentoAPI
  
  attr_accessor :url, :api_user, :api_key
  
  def initialize(base_url, api_user, api_key, options={})
    @url = base_url << '/api/xmlrpc/'
    @api_user = api_user
    @api_key = api_key
    @debug = options[:debug] || false
    @client = init_client
  end
  
  def call(method, *arguments)
    @client.call('call', session_id, method, arguments)
  end
  
  private
  
  def init_client
    client = XMLRPC::Client.new2(@url)
    http_debug(@debug)
    client.set_debug
    client
  end
  
  def http_debug(active)
    output = active ? $stderr : false
      
    XMLRPC::Client.class_eval do
      define_method :set_debug do
        @http.set_debug_output(output)
      end
    end
  end
  
  def session_id
    @client.call('login', @api_user, @api_key)
  end
  
end