class Azure::Table::Auth::SharedKey

Attributes

account_name[R]

The account name

Public Class Methods

new(account_name=Azure.config.storage_account_name, access_key=Azure.config.storage_access_key) click to toggle source

Public: Initialize the Signer.

account_name - The account name. Defaults to the one in the

global configuration.

access_key - The access_key encoded in Base64. Defaults to the

one in the global configuration.
Calls superclass method Azure::Core::Auth::Signer::new
# File lib/azure/table/auth/shared_key.rb, line 33
def initialize(account_name=Azure.config.storage_account_name, access_key=Azure.config.storage_access_key)
  @account_name = account_name
  super(access_key)
end

Public Instance Methods

canonicalized_resource(uri) click to toggle source

Calculate the Canonicalized Resource string for a request.

uri - The request's URI.

Returns a String with the canonicalized resource.

# File lib/azure/table/auth/shared_key.rb, line 79
def canonicalized_resource(uri)
  resource = "/%s%s" % [account_name, uri.path]

  comp = CGI.parse(uri.query.to_s).fetch("comp", nil)
  if (comp)
    resource = [resource, "comp=" + comp[0]].join("?")
  end

  resource
end
name() click to toggle source

Public: The name of the strategy.

Returns a String.

# File lib/azure/table/auth/shared_key.rb, line 41
def name
  "SharedKey"
end
sign(method, uri, headers) click to toggle source

Public: Generate a request signature.

verb - The HTTP request method. uri - The URI of the request we're signing. headers - A Hash of HTTP request headers.

Returns a Base64 String signed with HMAC.

Calls superclass method Azure::Core::Auth::Signer#sign
# File lib/azure/table/auth/shared_key.rb, line 52
def sign(method, uri, headers)
  signature = super(signable_string(method, uri, headers))
  return "#{account_name}:#{signature}"
end
signable_string(method, uri, headers) click to toggle source

Generate the string to sign.

verb - The HTTP request method. uri - The URI of the request we're signing. headers - A Hash of HTTP request headers.

Returns a plain text string.

# File lib/azure/table/auth/shared_key.rb, line 64
def signable_string(method, uri, headers)
  [
    method.to_s.upcase,
    headers.fetch("Content-MD5", ""),
    headers.fetch("Content-Type", ""),
    headers.fetch("Date") { headers.fetch("x-ms-date") },
    canonicalized_resource(uri)
  ].join("\n")
end