Class: GrandCloud::Authentication

Inherits:
Object
  • Object
show all
Defined in:
lib/grand_cloud/authentication.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(secret_access_key, snda_access_key_id) ⇒ Authentication

Returns a new instance of Authentication.



8
9
10
# File 'lib/grand_cloud/authentication.rb', line 8

def initialize(secret_access_key, snda_access_key_id)
  @secret_access_key, @snda_access_key_id = secret_access_key, snda_access_key_id
end

Instance Attribute Details

#secret_access_keyObject (readonly)

Returns the value of attribute secret_access_key.



6
7
8
# File 'lib/grand_cloud/authentication.rb', line 6

def secret_access_key
  @secret_access_key
end

#snda_access_key_idObject (readonly)

Returns the value of attribute snda_access_key_id.



6
7
8
# File 'lib/grand_cloud/authentication.rb', line 6

def snda_access_key_id
  @snda_access_key_id
end

Instance Method Details

#create_signature(options) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/grand_cloud/authentication.rb', line 12

def create_signature options
  secret_access_key = @secret_access_key
  http_verb = options[:method].to_s.upcase
  host = options[:host] || DEFAULT_HOST_URL
  uri = options[:uri] || ''
  protocal_params = options[:protocal_params]

  partial_signature = "#{http_verb}\n#{host}\n#{uri}"
  partial_signature <<  "\n#{protocal_params}" unless protocal_params.nil?
  digest = OpenSSL::Digest::Digest.new("sha256")
  hmac = OpenSSL::HMAC.digest(digest, secret_access_key, partial_signature)

  Base64.encode64(hmac).chomp
end

#generate_protocol_params(additional_params) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/grand_cloud/authentication.rb', line 27

def generate_protocol_params additional_params
  {
    :Expires => format_time((DateTime.now+(1/24.00)).to_time),
    #:Expires => '2013-07-03 00:00:00',
    :SignatureMethod => 'HmacSHA256',
    :SndaAccessKeyId => @snda_access_key_id,
    :Timestamp => format_time(Time.now)
    #:Timestamp => '2013-07-02 11:36:11'
  }.merge!(additional_params ? additional_params : {}).sort.collect{|k,v| "#{k}=#{v}"}.join('&')
end

#generate_upload_params(request_params) ⇒ Object



38
39
40
41
42
43
# File 'lib/grand_cloud/authentication.rb', line 38

def generate_upload_params request_params
  request_params.merge!({
    :SignatureMethod => 'HmacSHA256',
    :SndaAccessKeyId => @snda_access_key_id
  }).sort.collect{|k,v| "#{k}=#{v}"}.join('&')
end