Class: Awsnap::Request
- Inherits:
-
Object
- Object
- Awsnap::Request
- Defined in:
- lib/awsnap/request.rb
Instance Attribute Summary collapse
-
#access_key_id ⇒ Object
readonly
Returns the value of attribute access_key_id.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#secret_access_key ⇒ Object
readonly
Returns the value of attribute secret_access_key.
-
#verb ⇒ Object
readonly
Returns the value of attribute verb.
Instance Method Summary collapse
- #canonicalized_params ⇒ Object
- #hmac_signature ⇒ Object
-
#initialize(url, verb = :get, params) ⇒ Request
constructor
A new instance of Request.
- #params_string ⇒ Object
- #signature ⇒ Object
- #string_to_sign ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(url, verb = :get, params) ⇒ Request
Returns a new instance of Request.
6 7 8 9 10 11 12 13 |
# File 'lib/awsnap/request.rb', line 6 def initialize(url, verb = :get, params) @verb = verb @url = URI.parse(url) @access_key_id = params.delete(:access_key_id) @secret_access_key = params.delete(:secret_access_key) @expires = params.delete(:expires) || params.delete("Expires") @params = params.stringify_keys end |
Instance Attribute Details
#access_key_id ⇒ Object (readonly)
Returns the value of attribute access_key_id.
4 5 6 |
# File 'lib/awsnap/request.rb', line 4 def access_key_id @access_key_id end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
4 5 6 |
# File 'lib/awsnap/request.rb', line 4 def params @params end |
#secret_access_key ⇒ Object (readonly)
Returns the value of attribute secret_access_key.
4 5 6 |
# File 'lib/awsnap/request.rb', line 4 def secret_access_key @secret_access_key end |
#verb ⇒ Object (readonly)
Returns the value of attribute verb.
4 5 6 |
# File 'lib/awsnap/request.rb', line 4 def verb @verb end |
Instance Method Details
#canonicalized_params ⇒ Object
15 16 17 |
# File 'lib/awsnap/request.rb', line 15 def canonicalized_params normalized_params.sort.inject([]) {|params, pair| params.push(pair.map {|i| URI.encode(i, reserved_characters)}); params} end |
#hmac_signature ⇒ Object
27 28 29 |
# File 'lib/awsnap/request.rb', line 27 def hmac_signature HMAC::SHA256.digest(secret_access_key, string_to_sign) end |
#params_string ⇒ Object
19 20 21 |
# File 'lib/awsnap/request.rb', line 19 def params_string canonicalized_params.map{|pair| "#{pair[0]}=#{pair[1]}" }.join("&") end |
#signature ⇒ Object
31 32 33 |
# File 'lib/awsnap/request.rb', line 31 def signature URI.encode(Base64.encode64(hmac_signature).strip, reserved_characters) end |
#string_to_sign ⇒ Object
23 24 25 |
# File 'lib/awsnap/request.rb', line 23 def string_to_sign "#{verb.to_s.upcase}\n#{@url.host}\n#{@url.path}\n#{params_with_access_key}" end |
#to_s ⇒ Object
35 36 37 |
# File 'lib/awsnap/request.rb', line 35 def to_s "https://#{@url.host}#{@url.path}?#{params_with_access_key}&Signature=#{signature}" end |