class Twitter::REST::Request

Attributes

client[RW]
headers[RW]
options[RW]
path[RW]
rate_limit[RW]
request_method[RW]
uri[RW]
verb[RW]

Public Class Methods

new(client, request_method, path, options = {}) click to toggle source

@param client [Twitter::Client] @param #request_method [String, Symbol] @param path [String] @param options [Hash] @return [Twitter::REST::Request]

# File lib/twitter/rest/request.rb, line 21
def initialize(client, request_method, path, options = {})
  @client = client
  @request_method = request_method.to_sym
  @path = path
  @uri = Addressable::URI.parse(client.connection.url_prefix + path)
  @options = options
end

Public Instance Methods

perform() click to toggle source

@return [Array, Hash]

# File lib/twitter/rest/request.rb, line 30
def perform
  @headers = Twitter::Headers.new(@client, @request_method, @uri.to_s, @options).request_headers
  begin
    response = @client.connection.send(@request_method, @path, @options) { |request| request.headers.update(@headers) }.env
  rescue Faraday::Error::TimeoutError, Timeout::Error => error
    raise(Twitter::Error::RequestTimeout.new(error))
  rescue Faraday::Error::ClientError, JSON::ParserError => error
    raise(Twitter::Error.new(error))
  end
  @rate_limit = Twitter::RateLimit.new(response.response_headers)
  response.body
end