lib/azure/table/auth/shared_key.rb in azure-0.5.0 vs lib/azure/table/auth/shared_key.rb in azure-0.6.0

- old
+ new

@@ -1,92 +1,92 @@ -#------------------------------------------------------------------------- -# Copyright (c) Microsoft. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# 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 "azure/core/configuration" -require "azure/core/auth/signer" - -module Azure - module Table - module Auth - class SharedKey < Azure::Core::Auth::Signer - # 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. - # - # 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) - ].join("\n") - end - - # Calculate the Canonicalized Resource string for a request. - # - # uri - The request's URI. - # - # Returns a String with the canonicalized resource. - 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 - end - end - end -end +#------------------------------------------------------------------------- +# # Copyright (c) Microsoft and contributors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# 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 "azure/core/configuration" +require "azure/core/auth/signer" + +module Azure + module Table + module Auth + class SharedKey < Azure::Core::Auth::Signer + # 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. + # + # 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) + ].join("\n") + end + + # Calculate the Canonicalized Resource string for a request. + # + # uri - The request's URI. + # + # Returns a String with the canonicalized resource. + 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 + end + end + end +end