Sha256: 0449777ca4ce93a37e58d5dc759be9e9ab2fed74b1fd967f79b0ea4421c173bc

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'active_support/core_ext/module/attribute_accessors'
require 'active_support/core_ext/object'
require 'active_support/core_ext/string'

module ShareChecker
  autoload :Provider, 'share_checker/provider'
  autoload :Config, 'share_checker/config'
  
  module Providers
    autoload :Facebook, 'share_checker/providers/facebook'
    autoload :Twitter, 'share_checker/providers/twitter'
    autoload :Vkontakte, 'share_checker/providers/vkontakte'
    autoload :Odnoklassniki, 'share_checker/providers/odnoklassniki'
    autoload :Tweetracker, 'share_checker/providers/tweetracker'
    
    def self.get(provider)
      case provider.to_s.downcase
        when "facebook" then ShareChecker::Providers::Facebook
        when "twitter" then ShareChecker::Providers::Twitter
        when "vkontakte" then ShareChecker::Providers::Vkontakte
        when "odnoklassniki" then ShareChecker::Providers::Odnoklassniki
        when "tweetracker" then ShareChecker::Providers::Tweetracker
        else
          "ShareChecker::Providers::#{provider.to_s.classify}".constantize
      end
    end
    
    def self.avariable
      constants.select {|c| Class === const_get(c)}.sort.map(&:downcase).map(&:to_sym)
    end
  end
  
  mattr_accessor :config
  @@config = Config.new
  
  # Class methods
  
  def self.setup(&block)
    yield config
  end
  
  def self.check(*args)
    provider(*args).check
  end
  
  def self.provider(provider, url, options = {})
    options = (config.send(provider) || {}).merge(options)
    Providers.get(provider).new(url, provider, options)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
share_checker-0.1.7 lib/share_checker.rb