class Semantria::Authenticator

Attributes

consumer_key[R]
consumer_secret[R]
uri[RW]

Public Class Methods

new(consumer_key, consumer_secret) click to toggle source
# File lib/semantria/auth.rb, line 15
def initialize(consumer_key, consumer_secret)
  @consumer_secret, @consumer_key = consumer_secret, consumer_key
end

Public Instance Methods

headers() click to toggle source
# File lib/semantria/auth.rb, line 19
def headers
  {'Authorization' => parameters_hash.merge({'OAuth realm' => '', "oauth_signature" => signature}).map { |k, v| "#{k}=#{v}" }.join(',')}
end
parameters_hash() click to toggle source
# File lib/semantria/auth.rb, line 23
def parameters_hash
  { "oauth_version" => '1.0',
    "oauth_timestamp" => timestamp,
    "oauth_nonce" => nonce,
    "oauth_signature_method" => "HMAC-SHA1",
    "oauth_consumer_key" => consumer_key }
end
path() click to toggle source
# File lib/semantria/auth.rb, line 36
def path
  updated_uri.request_uri
end
updated_uri() click to toggle source
# File lib/semantria/auth.rb, line 31
def updated_uri
  uri.query = parameters_hash.map {|k, v| "#{k}=#{v}"}.join('&').gsub('+', '%20').gsub('%7E', '~')
  uri
end

Private Instance Methods

escape(s) click to toggle source
# File lib/semantria/auth.rb, line 59
def escape(s)
  CGI::escape(s)
end
nonce() click to toggle source
# File lib/semantria/auth.rb, line 42
def nonce
  @nonce ||= rand(10 ** 20).to_s.rjust(20, '0')
end
sha_1() click to toggle source
# File lib/semantria/auth.rb, line 54
def sha_1
  a = OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), Digest::MD5.hexdigest(consumer_secret), escape(updated_uri.to_s))
  Base64.encode64(a).chomp.gsub(/\n/, '')
end
signature() click to toggle source
# File lib/semantria/auth.rb, line 50
def signature
  escape(sha_1)
end
timestamp() click to toggle source
# File lib/semantria/auth.rb, line 46
def timestamp
  Time.now.to_i.to_s
end