Class: SageoneApiRequestSigner
- Inherits:
-
Object
- Object
- SageoneApiRequestSigner
- Defined in:
- lib/sageone_api_request_signer.rb,
lib/sageone_api_request_signer/version.rb
Overview
“Sign” an Sageone API request call following the steps detailed here: developers.sageone.com/docs#signing_your_requests
Constant Summary collapse
- VERSION =
"1.0.1"
Instance Attribute Summary collapse
-
#access_token ⇒ Object
Returns the value of attribute access_token.
-
#body_params ⇒ Object
Returns the value of attribute body_params.
-
#nonce ⇒ Object
Returns the value of attribute nonce.
-
#request_method ⇒ Object
Returns the value of attribute request_method.
-
#signing_secret ⇒ Object
Returns the value of attribute signing_secret.
-
#url ⇒ Object
Returns the value of attribute url.
Instance Method Summary collapse
- #base_url ⇒ Object
-
#initialize(params = {}) ⇒ SageoneApiRequestSigner
constructor
A new instance of SageoneApiRequestSigner.
- #parameter_string ⇒ Object
-
#request_headers ⇒ Object
Just a help to write the signature info on the request headers.
- #signature ⇒ Object
- #signature_base_string ⇒ Object
- #signing_key ⇒ Object
- #uri ⇒ Object
- #url_params ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ SageoneApiRequestSigner
Returns a new instance of SageoneApiRequestSigner.
10 11 12 13 14 |
# File 'lib/sageone_api_request_signer.rb', line 10 def initialize(params = {}) params.each do |attr, val| self.public_send("#{attr}=", val) end end |
Instance Attribute Details
#access_token ⇒ Object
Returns the value of attribute access_token.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def access_token @access_token end |
#body_params ⇒ Object
Returns the value of attribute body_params.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def body_params @body_params end |
#nonce ⇒ Object
Returns the value of attribute nonce.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def nonce @nonce end |
#request_method ⇒ Object
Returns the value of attribute request_method.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def request_method @request_method end |
#signing_secret ⇒ Object
Returns the value of attribute signing_secret.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def signing_secret @signing_secret end |
#url ⇒ Object
Returns the value of attribute url.
8 9 10 |
# File 'lib/sageone_api_request_signer.rb', line 8 def url @url end |
Instance Method Details
#base_url ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/sageone_api_request_signer.rb', line 28 def base_url @base_url ||= [ uri.scheme, '://', uri.host, (":#{uri.port}" if uri.port != uri.default_port), uri.path ].join end |
#parameter_string ⇒ Object
42 43 44 45 46 47 |
# File 'lib/sageone_api_request_signer.rb', line 42 def parameter_string @parameter_string ||= ( key_value_pair = percent_encode_pair(url_params.merge(body_params).sort) key_value_pair.map{|pair| pair.join('=') }.join('&') ) end |
#request_headers ⇒ Object
Just a help to write the signature info on the request headers
70 71 72 73 74 75 76 |
# File 'lib/sageone_api_request_signer.rb', line 70 def request_headers { 'Authorization' => "Bearer #{access_token}", 'X-Nonce' => nonce, 'X-Signature' => signature } end |
#signature ⇒ Object
65 66 67 |
# File 'lib/sageone_api_request_signer.rb', line 65 def signature @signature ||= Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), signing_key, signature_base_string)) end |
#signature_base_string ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/sageone_api_request_signer.rb', line 49 def signature_base_string @signature_base_string ||= [ request_method, percent_encode(base_url), percent_encode(parameter_string), percent_encode(nonce) ].join('&') end |
#signing_key ⇒ Object
58 59 60 61 62 63 |
# File 'lib/sageone_api_request_signer.rb', line 58 def signing_key @signing_key ||= [ percent_encode(signing_secret), percent_encode(access_token) ].join('&') end |
#uri ⇒ Object
24 25 26 |
# File 'lib/sageone_api_request_signer.rb', line 24 def uri @uri ||= URI(url) end |
#url_params ⇒ Object
38 39 40 |
# File 'lib/sageone_api_request_signer.rb', line 38 def url_params @url_params ||= Hash[URI::decode_www_form(uri.query || '')] end |