# config.rb contains classes, methods and extends existing Twitter4R classes # to provide easy configuration facilities. module Twitter # Represents global configuration for Twitter::Client. # Can override the following configuration options: # * protocol - :http, :https or :ssl supported. :ssl is an alias for :https. Defaults to :ssl # * host - hostname to connect to for the Twitter service. Defaults to 'twitter.com'. # * port - port to connect to for the Twitter service. Defaults to 443. # * proxy_host - proxy host to use. Defaults to nil. # * proxy_port - proxy host to use. Defaults to nil. # * proxy_user - proxy username to use. Defaults to nil. # * proxy_pass - proxy password to use. Defaults to nil. # * user_agent - user agent string to use for each request of the HTTP header. # * application_name - name of your client application. Defaults to 'Twitter4R' # * application_version - version of your client application. Defaults to current Twitter::Version.to_version. # * application_url - URL of your client application. Defaults to http://twitter4r.rubyforge.org. # * source - the source id given to you by Twitter to identify your application in their web interface. Note: you must contact Twitter.com developer directly so they can configure their servers appropriately. class Config include ClassUtilMixin @@ATTRIBUTES = [ :protocol, :host, :port, :proxy_host, :proxy_port, :proxy_user, :proxy_pass, :user_agent, :application_name, :application_version, :application_url, :source, ] attr_accessor *@@ATTRIBUTES # Override of Object#eql? to ensure RSpec specifications run # correctly. Also done to follow Ruby best practices. def eql?(other) return true if self == other @@ATTRIBUTES.each do |att| return false unless self.send(att).eql?(other.send(att)) end true end end class Client @@defaults = { :host => 'twitter.com', :port => 443, :protocol => :ssl, :proxy_host => nil, :proxy_port => nil, :user_agent => "default", :application_name => 'Twitter4R', :application_version => Twitter::Version.to_version, :application_url => 'http://twitter4r.rubyforge.org', :source => 'twitter4r', } @@config = Twitter::Config.new(@@defaults) # Twitter::Client class methods class << self # Yields to given block to configure the Twitter4R API. def configure(&block) raise ArgumentError, "Block must be provided to configure" unless block_given? yield @@config end # configure end # class << self end # Client class end # Twitter module