Sha256: 4f6f45ca3b2871dc4af6333c050aba3daf5c6f6f61ebdf45a42bd7ae24f5c9fc

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require 'rapuncel'

module Kangaroo
  module Util
    class Proxy < Rapuncel::Proxy
      autoload :Common, 'kangaroo/util/proxy/common'
      autoload :Db, 'kangaroo/util/proxy/db'
      autoload :Superadmin, 'kangaroo/util/proxy/superadmin'
      autoload :Object, 'kangaroo/util/proxy/object'
      autoload :Workflow, 'kangaroo/util/proxy/workflow'
      autoload :Report, 'kangaroo/util/proxy/report'
      autoload :Wizard, 'kangaroo/util/proxy/wizard'

      def __initialize__ client, *curry_args
        super client, nil
        @curry_args = curry_args
      end

      def call! name, *args
        super name, *__curry__(*args)
      rescue Rapuncel::Response::Fault => f
        case f.message
        when /^Method not found\: (.+)/
          raise NoMethodError, $1, caller + ["OpenERP Server Traceback:"] + f.backtrace.reverse
        else
          message = "OpenERP Server Exception " + f.message.to_s
          
          raise Rapuncel::Response::Fault, message, f.backtrace.reverse[0..-2]
        end
      end

      def self.new *args
        allocate.__tap__ do |proxy|
          proxy.__initialize__ *args
        end
      end

      protected
      def __curry__ *args
        @curry_args + args
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kangaroo-0.1.0.alpha1 lib/kangaroo/util/proxy.rb