Module: OAuthActiveResource

Defined in:
lib/oauth_active_resource.rb,
lib/oauth_active_resource/resource.rb,
lib/oauth_active_resource/connection.rb,
lib/oauth_active_resource/unique_resource_array.rb,
lib/oauth_active_resource/fake_oauth_access_token.rb

Defined Under Namespace

Classes: Connection, FakeOAuthAccessToken, Resource, UniqueArray, UniqueResourceArray

Class Method Summary collapse

Class Method Details

.register(add_to_module, model_module, options = {}) ⇒ Object

TODO check if klass has ancestor OAuthActiveResource



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/oauth_active_resource.rb', line 13

def self.register(add_to_module, model_module, options = {})
  oauth_connection = options[:access_token]
  
  if oauth_connection.nil?
    oauth_connection = FakeOAuthAccessToken.new
  end
  
  site = options[:site]

  mod = Module.new do
    model_module.constants.each do |klass|
      # TODO check if klass.is_a OAuthActiveResource
      sub = Class.new(model_module.const_get(klass)) do
        self.site = site
        @oauth_connection = oauth_connection
      end
      const_set(klass, sub)
    end
    
    def self.method_missing(name,*args)
      self.const_get(name)
    rescue
      super(name,*args)
    end
    
    def self.destroy
      name =  self.model_name.split('::').last
      self.parent.send :remove_const, name
    end
  end
  
  # Obscure (=Hash) token+secret, b/c it should stay one
  if oauth_connection.nil?
    dynamic_module_name = "AnonymousConsumer"
  else
    hash = Digest::MD5.hexdigest("#{oauth_connection.token}#{oauth_connection.secret}")
    dynamic_module_name = "OAuthConsumer#{hash}"
  end
  
  if add_to_module.const_defined? dynamic_module_name
    mod = add_to_module.const_get dynamic_module_name
  else
    add_to_module.const_set(dynamic_module_name, mod)
  end
  
  return mod
end