Module: OauthHeader

Defined in:
lib/oauth_header.rb,
lib/oauth_header/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.generate_token(size = 7) ⇒ Object



34
35
36
# File 'lib/oauth_header.rb', line 34

def self.generate_token(size=7)
  Base64.encode64(OpenSSL::Random.random_bytes(size)).gsub(/\W/, '')
end

.get_header(key, secret, method = 'GET', url = '', token = '', grant_type = '') ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/oauth_header.rb', line 9

def self.get_header(key, secret, method='GET', url='', token='', grant_type='')
  begin
    params = params_format(key)
    signature_string_maker = signature_string_maker(method, url, params)
    signing_key = secret + '&' + token
    params['oauth_signature'] = url_encoding(ssl_digestive_encoded(signing_key, signature_string_maker))
    params['oauth_consumer_key'] = key
    header_string = header(params)
  rescue
    header_string = ''
  end
  return header_string
end

.header(params) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/oauth_header.rb', line 53

def self.header(params)
  header = "OAuth "
  params.each do |k, v|
    header = header + k +'='+ "'#{v}',"
  end
  header.slice(0..-2)
end

.params_format(key) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/oauth_header.rb', line 23

def self.params_format(key)
  params = {
    'oauth_consumer_key' => key,
    'oauth_nonce' => generate_token,
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => Time.now.getutc.to_i.to_s,
    'oauth_version' => '1.0'
  }
  return params
end

.signature_string_maker(method, uri, params) ⇒ Object



38
39
40
41
# File 'lib/oauth_header.rb', line 38

def self.signature_string_maker(method, uri, params)
  encoded_params = params.sort.collect{ |k, v| url_encoding("#{k}=#{v}") }.join('%26')
  method + '&' + url_encoding(uri) + '&' + encoded_params
end

.ssl_digestive_encoded(key, base_string) ⇒ Object



43
44
45
46
47
# File 'lib/oauth_header.rb', line 43

def self.ssl_digestive_encoded(key, base_string)
  digest = OpenSSL::Digest.new('sha1')
  ssl_digest = OpenSSL::HMAC.digest(digest, key, base_string)
  Base64.encode64(ssl_digest).chomp.gsub(/\n/, '')
end

.url_encoding(string) ⇒ Object



49
50
51
# File 'lib/oauth_header.rb', line 49

def self.url_encoding(string)
  CGI::escape(string)
end