lib/azure/table/auth/shared_key.rb in azure-0.7.0.pre vs lib/azure/table/auth/shared_key.rb in azure-0.7.0.pre2

- old
+ new

@@ -10,83 +10,50 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #-------------------------------------------------------------------------- -require "cgi" +require 'cgi' +require 'azure/core/auth/signer' -require "azure/core/configuration" -require "azure/core/auth/signer" - module Azure module Table module Auth - class SharedKey < Azure::Core::Auth::Signer + class SharedKey < Azure::Core::Auth::SharedKey # The account name attr :account_name - # 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. - 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: The name of the strategy. - # - # Returns a String. - def name - "SharedKey" - end - - # 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. - def sign(method, uri, headers) - signature = super(signable_string(method, uri, headers)) - return "#{account_name}:#{signature}" - end - # 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. + # @param method [Symbol] The HTTP request method. + # @param uri [URI] The URI of the request we're signing. + # @param headers [Hash] The HTTP request headers. # # Returns a plain text string. 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) + 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 # Calculate the Canonicalized Resource string for a request. # - # uri - The request's URI. + # @param uri [URI] The request's URI. # - # Returns a String with the canonicalized resource. + # @return [String] with the canonicalized resource. def canonicalized_resource(uri) - resource = "/%s%s" % [account_name, uri.path] + resource = "/#{account_name}#{uri.path}" - comp = CGI.parse(uri.query.to_s).fetch("comp", nil) - if (comp) - resource = [resource, "comp=" + comp[0]].join("?") - end + comp = CGI.parse(uri.query.to_s).fetch('comp', nil) + resource = [resource, 'comp=' + comp[0]].join('?') if comp resource end + end end end end