Class: Azure::Table::Auth::SharedKey

Inherits:
Core::Auth::Signer show all
Defined in:
lib/azure/table/auth/shared_key.rb

Direct Known Subclasses

SharedKeyLite

Instance Attribute Summary collapse

Attributes inherited from Core::Auth::Signer

#access_key

Instance Method Summary collapse

Constructor Details

#initialize(account_name = Azure.config.storage_account_name, access_key = Azure.config.storage_access_key) ⇒ SharedKey

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.


33
34
35
36
# File 'lib/azure/table/auth/shared_key.rb', line 33

def initialize(=Azure.config., access_key=Azure.config.storage_access_key)
  @account_name = 
  super(access_key)
end

Instance Attribute Details

#account_nameObject (readonly)

The account name



25
26
27
# File 'lib/azure/table/auth/shared_key.rb', line 25

def 
  @account_name
end

Instance Method Details

#canonicalized_resource(uri) ⇒ Object

Calculate the Canonicalized Resource string for a request.

uri - The request’s URI.

Returns a String with the canonicalized resource.



79
80
81
82
83
84
85
86
87
88
# File 'lib/azure/table/auth/shared_key.rb', line 79

def canonicalized_resource(uri)
  resource = "/%s%s" % [, uri.path]

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

  resource
end

#nameObject

Public: The name of the strategy.

Returns a String.



41
42
43
# File 'lib/azure/table/auth/shared_key.rb', line 41

def name
  "SharedKey"
end

#sign(method, uri, headers) ⇒ Object

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.



52
53
54
55
# File 'lib/azure/table/auth/shared_key.rb', line 52

def sign(method, uri, headers)
  signature = super(signable_string(method, uri, headers))
  return "#{}:#{signature}"
end

#signable_string(method, uri, headers) ⇒ Object

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.



64
65
66
67
68
69
70
71
72
# 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