Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

110 lines (98 sloc) 3.399 kB
require 'faraday'
require 'multi_json'
require 'twitter/api/direct_messages'
require 'twitter/api/favorites'
require 'twitter/api/friends_and_followers'
require 'twitter/api/help'
require 'twitter/api/lists'
require 'twitter/api/oauth'
require 'twitter/api/places_and_geo'
require 'twitter/api/saved_searches'
require 'twitter/api/search'
require 'twitter/api/spam_reporting'
require 'twitter/api/suggested_users'
require 'twitter/api/timelines'
require 'twitter/api/trends'
require 'twitter/api/tweets'
require 'twitter/api/undocumented'
require 'twitter/api/users'
require 'twitter/configurable'
require 'twitter/error/client_error'
require 'twitter/error/decode_error'
require 'simple_oauth'
require 'uri'
module Twitter
# Wrapper for the Twitter REST API
#
# @note All methods have been separated into modules and follow the same grouping used in {http://dev.twitter.com/doc the Twitter API Documentation}.
# @see http://dev.twitter.com/pages/every_developer
class Client
include Twitter::API::DirectMessages
include Twitter::API::Favorites
include Twitter::API::FriendsAndFollowers
include Twitter::API::Help
include Twitter::API::Lists
include Twitter::API::OAuth
include Twitter::API::PlacesAndGeo
include Twitter::API::SavedSearches
include Twitter::API::Search
include Twitter::API::SpamReporting
include Twitter::API::SuggestedUsers
include Twitter::API::Timelines
include Twitter::API::Trends
include Twitter::API::Tweets
include Twitter::API::Undocumented
include Twitter::API::Users
include Twitter::Configurable
# Initializes a new Client object
#
# @param options [Hash]
# @return [Twitter::Client]
def initialize(options={})
Twitter::Configurable.keys.each do |key|
instance_variable_set(:"@#{key}", options[key] || Twitter.instance_variable_get(:"@#{key}"))
end
end
# Perform an HTTP DELETE request
def delete(path, params={})
request(:delete, path, params)
end
# Perform an HTTP GET request
def get(path, params={})
request(:get, path, params)
end
# Perform an HTTP POST request
def post(path, params={})
signature_params = params.values.any?{|value| value.respond_to?(:to_io)} ? {} : params
request(:post, path, params, signature_params)
end
# Perform an HTTP PUT request
def put(path, params={})
request(:put, path, params)
end
private
def request(method, path, params={}, signature_params=params)
connection.send(method.to_sym, path, params) do |request|
request.headers[:authorization] = auth_header(method.to_sym, path, signature_params).to_s
end.env
rescue Faraday::Error::ClientError
raise Twitter::Error::ClientError
rescue MultiJson::DecodeError
raise Twitter::Error::DecodeError
end
# Returns a Faraday::Connection object
#
# @return [Faraday::Connection]
def connection
@connection ||= begin
connection_options = {:builder => @middleware}
connection_options[:ssl] = {:verify => true} if @endpoint[0..4] == 'https'
Faraday.new(@endpoint, @connection_options.merge(connection_options))
end
end
def auth_header(method, path, params={})
uri = URI(@endpoint + path)
SimpleOAuth::Header.new(method, uri, params, credentials)
end
end
end
Jump to Line
Something went wrong with that request. Please try again.