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