class Remotenv::Adapters::S3
Private Instance Methods
config()
click to toggle source
# File lib/remotenv/adapters/s3.rb, line 15 def config @_config ||= begin uri = Remotenv.uri return {} unless uri && uri.host && uri.path { 'filename' => uri.path[1..-1], 'bucket_name' => uri.host, 'access_key_id' => uri.user, 'secret_access_key' => uri.password ? ::URI.unescape(uri.password) : nil, }.reject { |_, v| v.nil? } end end
direct_s3_url()
click to toggle source
# File lib/remotenv/adapters/s3.rb, line 36 def direct_s3_url "https://#{config['bucket_name']}.s3.amazonaws.com/#{config['filename']}" end
remote_uri()
click to toggle source
# File lib/remotenv/adapters/s3.rb, line 28 def remote_uri if config['access_key_id'] && config['secret_access_key'] URI(signed_s3_url) else URI(direct_s3_url) end end
signed_s3_url()
click to toggle source
# File lib/remotenv/adapters/s3.rb, line 40 def signed_s3_url s3_resource = "/#{config['bucket_name']}/#{config['filename']}" s3_expires_at = Time.now + 300 signature_payload = "GET\n\n\n#{s3_expires_at.to_i}\n#{s3_resource}" digest = OpenSSL::Digest.new('sha1') hmac = OpenSSL::HMAC.digest(digest, config['secret_access_key'], signature_payload) query_params = [ "AWSAccessKeyId=#{config['access_key_id']}", "Expires=#{s3_expires_at.to_i}", "Signature=#{CGI.escape Base64.encode64(hmac).strip}" ] "#{direct_s3_url}?#{query_params.join('&')}" end