module Platform::Api::Proxy

Public Class Methods

add(klass, proxy_class) click to toggle source
# File lib/platform/api/proxy.rb, line 5
def self.add(klass, proxy_class)
  proxy_class.ensure_valid_class_name
  (Platform::Config.proxies[klass.name] ||= SortedSet.new) << proxy_class
end
for(instance, version=nil) click to toggle source
# File lib/platform/api/proxy.rb, line 27
def self.for(instance, version=nil)
  return proxy_class_for(instance.class, version).new(instance)
end
proxy_class_for(klass, version=nil) click to toggle source
# File lib/platform/api/proxy.rb, line 10
def self.proxy_class_for(klass, version=nil)
  unless proxy_array = proxies_for(klass)
    raise ArgumentError, "No proxy for class: #{klass.name}"
  end

  proxy_array = proxy_array.to_a
  if version.nil?
    proxy_class = proxy_array.last
  else
    version = version.to_i
    proxy_class = proxy_array.reverse.find {|ii| ii.api_version <= version}
  end
  raise ArgumentError "No proxy for version: #{version}" if proxy_class.nil?

  proxy_class
end
reset() click to toggle source
# File lib/platform/api/proxy.rb, line 31
def self.reset
  Platform::Config.proxies.clear
end

Private Class Methods

proxies_for(klass) click to toggle source
# File lib/platform/api/proxy.rb, line 37
def self.proxies_for(klass)
  Platform::Config.load_proxies if Platform::Config.proxies.empty?
  klass.ancestors.detect {|ii| return Platform::Config.proxies[ii.name] if Platform::Config.proxies.has_key?(ii.name)}
  return nil
end