class Twitter::Headers

Public Class Methods

new(client, request_method, url, options = {}) click to toggle source
# File lib/twitter/headers.rb, line 7
def initialize(client, request_method, url, options = {})
  @client = client
  @request_method = request_method.to_sym
  @uri = Addressable::URI.parse(url)
  @options = options
  @signature_options = @request_method == :post && @options.values.any? { |value| value.respond_to?(:to_io) } ? {} : @options
end

Public Instance Methods

oauth_auth_header() click to toggle source
# File lib/twitter/headers.rb, line 15
def oauth_auth_header
  SimpleOAuth::Header.new(@request_method, @uri, @signature_options, @client.credentials)
end
request_headers() click to toggle source
# File lib/twitter/headers.rb, line 19
def request_headers
  bearer_token_request = @options.delete(:bearer_token_request)
  headers = {}
  if bearer_token_request
    headers[:accept]        = '*/*'
    headers[:authorization] = bearer_token_credentials_auth_header
    headers[:content_type]  = 'application/x-www-form-urlencoded; charset=UTF-8'
  else
    headers[:authorization] = auth_header
  end
  headers
end

Private Instance Methods

auth_header() click to toggle source
# File lib/twitter/headers.rb, line 34
def auth_header
  if @client.user_token?
    oauth_auth_header.to_s
  else
    @client.bearer_token = @client.token unless @client.bearer_token?
    bearer_auth_header
  end
end
bearer_auth_header() click to toggle source
# File lib/twitter/headers.rb, line 43
def bearer_auth_header
  bearer_token = @client.bearer_token
  token = bearer_token.is_a?(Twitter::Token) && bearer_token.bearer? ? bearer_token.access_token : bearer_token
  "Bearer #{token}"
end
bearer_token_credentials_auth_header() click to toggle source

Generates authentication header for a bearer token request

@return [String]

# File lib/twitter/headers.rb, line 52
def bearer_token_credentials_auth_header
  basic_auth_token = strict_encode64("#{@client.consumer_key}:#{@client.consumer_secret}")
  "Basic #{basic_auth_token}"
end
strict_encode64(str) click to toggle source

Base64.strict_encode64 is not available on Ruby 1.8.7

# File lib/twitter/headers.rb, line 58
def strict_encode64(str)
  Base64.encode64(str).delete("\n")
end