· 9 years ago · Nov 15, 2016, 11:20 PM
1require 'oauth'
2require 'oauth/signature/plaintext'
3
4module Cerner
5 module OAuth1a
6
7 OAUTH_VERSION = '1.0'
8
9 class AccessToken
10
11 def initialize(consumer_key, consumer_secret, oauth_url, signature_method, timeout, open_timeout, access_token)
12 @consumer_key = consumer_key
13 @consumer_secret = consumer_secret
14 @oauth_url = oauth_url
15 @signature_method = signature_method
16 @timeout = timeout
17 @open_timeout = open_timeout
18 @access_token = access_token
19 end
20
21 def self.request(consumer_key:, consumer_secret:, oauth_url:, signature_method: 'PLAINTEXT', timeout: 6, open_timeout: 6)
22 consumer_instance = consumer(consumer_key, consumer_secret, oauth_url, signature_method, timeout , open_timeout)
23 access_token = consumer_instance.get_access_token(nil)
24 new(consumer_key, consumer_secret, oauth_url, signature_method, timeout, open_timeout, access_token)
25 end
26
27 def self.consumer(consumer_key, consumer_secret, oauth_url, signature_method, timeout , open_timeout)
28 OAuth::Consumer.new(consumer_key,
29 consumer_secret,
30 access_token_url: oauth_url,
31 signature_method: signature_method,
32 timeout: timeout,
33 open_timeout: open_timeout)
34 end
35
36 def get_authorization_header
37 tuples = {
38 oauth_version: OAUTH_VERSION,
39 oauth_signature_method: @signature_method,
40 oauth_signature: "#{@consumer_secret}&#{@access_token.secret}",
41 oauth_consumer_key: @consumer_key,
42 oauth_timestamp: generate_timestamp,
43 oauth_token: @access_token.token
44 }
45 @authorization_header ||= "OAuth " + tuples.map { |k, v| "#{k}=\"#{URI.encode_www_form_component(v)}\"" }.join(', ')
46 end
47
48 def generate_timestamp
49 Time.now.to_i
50 end
51 end
52 end
53end