Sha256: a4dd2ac9bccdd3388b1fe04897c41ad33251df53b0f181e48dc69f500ce88127

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require 'activeresource'
require 'digest/md5'

module OAuthActiveResource

  # TODO check if klass has ancestor OAuthActiveResource
  def self.register(add_to_module, model_module, options = {})
    
    oauth_connection = options[:access_token]
    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
      
    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
    
    add_to_module.const_set(dynamic_module_name, mod)
    return mod
  end
  
end


require 'oauth_active_resource/connection'
require 'oauth_active_resource/resource'
require 'oauth_active_resource/collection'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jwagener-oauth-active-resource-0.1.0 lib/oauth_active_resource.rb