class Aliyun::ESS::Authentication::CanonicalString

Constants

DEFAULT_PARAMS

Attributes

params[R]
query[R]

Public Class Methods

new(params, access_key_id, options = {}) click to toggle source
Calls superclass method
# File lib/aliyun/ess/authentication.rb, line 82
def initialize(params, access_key_id, options = {})
  super()
  @params        = params
  @access_key_id = access_key_id
  @options       = options
  self << build
end

Private Instance Methods

build() click to toggle source
# File lib/aliyun/ess/authentication.rb, line 92
def build
  initialize_query

  canonicalized_query_string = query.sort_by{|k, _| k}.map do |key, value|
    value = value.to_s.strip
    escaped_value = escape_string(value)
    "#{key}=#{escaped_value}"
  end.join('&')

  canonicalized_query_string
end
escape_string(str) click to toggle source
# File lib/aliyun/ess/authentication.rb, line 104
def escape_string(str)
  CGI.escape(str).gsub(/\+/,'%20').gsub(/%7E/, '~')
end
initialize_query() click to toggle source
# File lib/aliyun/ess/authentication.rb, line 108
def initialize_query
  @query = { 'AccessKeyId' => @access_key_id }
  @query = params.merge(@query)
  @query = DEFAULT_PARAMS.merge('SignatureNonce' => random_string, 'Timestamp' => Time.now.utc.iso8601).merge(@query)
end
random_string(len=32) click to toggle source
# File lib/aliyun/ess/authentication.rb, line 114
def random_string(len=32)
  rand(36**(len-1)..36**(len)).to_s 36
end