Class: Boomerang::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/boomerang/signature.rb

Constant Summary collapse

SHA1_ALGORITHM =
OpenSSL::Digest::Digest.new("sha1")
SHA256_ALGORITHM =
OpenSSL::Digest::Digest.new("sha256")

Instance Method Summary collapse

Constructor Details

#initialize(http_verb, url, parameters, algorithm = SHA256_ALGORITHM) ⇒ Signature

Returns a new instance of Signature.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/boomerang/signature.rb', line 6

def initialize(http_verb, url, parameters, algorithm = SHA256_ALGORITHM)
  @fps        = !!(url =~ /\bfps\b/)
  @http_verb  = http_verb
  @url        = URI.parse(url)
  @parameters = parameters.merge(
    Utilities.camel_case(
      { :signature_version => "2",
        :signature_method  => algorithm == SHA256_ALGORITHM ?
                              "HmacSHA256"                  :
                              "HmacSHA1" },
      fps?
    )
  )
  if fps?
    @parameters["Timestamp"] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
  end
  @algorithm  = algorithm
  @signature  = nil
end

Instance Method Details

#sign(access_key_id, secret_access_key) ⇒ Object



26
27
28
29
30
# File 'lib/boomerang/signature.rb', line 26

def sign(access_key_id, secret_access_key)
  @parameters[ fps? ? "AWSAccessKeyId" :
                      "callerKey" ] = access_key_id
  @signature                        = hash(secret_access_key)
end

#signed_fieldsObject



32
33
34
# File 'lib/boomerang/signature.rb', line 32

def signed_fields
  @parameters.merge(Utilities.camel_case(:signature, fps?) => @signature)
end