twitter-status-bot/.gems/gems/twitter-5.11.0/lib/twitter/client.rb

74 lines
2.1 KiB
Ruby

require 'addressable/uri'
require 'simple_oauth'
require 'twitter/error'
require 'twitter/utils'
require 'twitter/version'
module Twitter
class Client
include Twitter::Utils
attr_accessor :access_token, :access_token_secret, :consumer_key, :consumer_secret, :proxy
attr_writer :user_agent
deprecate_alias :oauth_token, :access_token
deprecate_alias :oauth_token=, :access_token=
deprecate_alias :oauth_token_secret, :access_token_secret
deprecate_alias :oauth_token_secret=, :access_token_secret=
# Initializes a new Client object
#
# @param options [Hash]
# @return [Twitter::Client]
def initialize(options = {})
options.each do |key, value|
send(:"#{key}=", value)
end
yield(self) if block_given?
validate_credential_type!
end
# @return [Boolean]
def user_token?
!!(access_token && access_token_secret)
end
# @return [String]
def user_agent
@user_agent ||= "Twitter Ruby Gem #{Twitter::Version}"
end
# @return [Hash]
def credentials
{
:consumer_key => consumer_key,
:consumer_secret => consumer_secret,
:token => access_token,
:token_secret => access_token_secret,
}
end
# @return [Boolean]
def credentials?
credentials.values.all?
end
private
# Ensures that all credentials set during configuration are of a
# valid type. Valid types are String and Symbol.
#
# @raise [Twitter::Error::ConfigurationError] Error is raised when
# supplied twitter credentials are not a String or Symbol.
def validate_credential_type!
credentials.each do |credential, value|
next if value.nil?
fail(Twitter::Error::ConfigurationError.new("Invalid #{credential} specified: #{value.inspect} must be a string or symbol.")) unless value.is_a?(String) || value.is_a?(Symbol)
end
end
def oauth_auth_header(method, uri, params = {})
uri = Addressable::URI.parse(uri)
SimpleOAuth::Header.new(method, uri, params, credentials)
end
end
end