Method: RightSupport::Net::S3Helper.get

Defined in:
lib/right_support/net/s3_helper.rb

.get(key, &blck) ⇒ String

Downloads data from S3 Bucket

Parameters:

  • key (String)

    Name of the bucket key

  • blck (Block)

    Ruby code wich will be done by Bucket object

Returns:

  • (String)

    S3 bucket’s key content in plain/text format



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/right_support/net/s3_helper.rb', line 107

def self.get(key, &blck)
  return nil unless s3_enabled?

  object = bucket.key(key, true, &blck)
  return nil if object.nil?

  # don't decrypt/verify unencrypted values
  return object.data if object.meta_headers["digest"].nil?

  ciphertext = object.data
  passphrase = "#{key}:#{master_secret}"
  plaintext = @encryptor.decrypt(:key=>passphrase, :value=>ciphertext)
  digest = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new, passphrase, plaintext)

  if digest == object.meta_headers["digest"]
    return plaintext
  else
    raise "digest for key:#{key} in s3 does not match calculated digest."
  end
end