Sha256: 09a7a2d79769d60c81e7722814a7ceca017a3c75ccab5c49538c40aac5615d14

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

require 'rubygems'

gem 'activeresource'
require 'active_resource'

gem 'oauth'
require 'oauth'

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]
    
    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
end

require File.expand_path('oauth_active_resource/connection',              File.dirname(__FILE__))
require File.expand_path('oauth_active_resource/resource',                File.dirname(__FILE__))
require File.expand_path('oauth_active_resource/unique_resource_array',   File.dirname(__FILE__))
require File.expand_path('oauth_active_resource/fake_oauth_access_token', File.dirname(__FILE__))

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oauth-active-resource-0.4.7 lib/oauth_active_resource.rb
oauth-active-resource-0.4.6 lib/oauth_active_resource.rb
oauth-active-resource-0.4.5 lib/oauth_active_resource.rb