Class: CarrierWaveDirect::Policies::AwsBase64Sha1

Inherits:
Base
  • Object
show all
Defined in:
lib/carrierwave_direct/policies/aws_base64_sha1.rb

Instance Attribute Summary

Attributes inherited from Base

#uploader

Instance Method Summary collapse

Methods inherited from Base

#clear!, #initialize, #policy

Constructor Details

This class inherits a constructor from CarrierWaveDirect::Policies::Base

Instance Method Details

#direct_fog_hash(policy_options = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/carrierwave_direct/policies/aws_base64_sha1.rb', line 15

def direct_fog_hash(policy_options = {})
  {
    key:            uploader.key,
    AWSAccessKeyId: uploader.aws_access_key_id,
    acl:            uploader.acl,
    policy:         policy(policy_options),
    signature:      signature,
    uri:            uploader.direct_fog_url
  }
end

#generate(options) {|conditions| ... } ⇒ Object

Yields:

  • (conditions)


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/carrierwave_direct/policies/aws_base64_sha1.rb', line 26

def generate(options, &block)

  return @policy if @policy.present?
  conditions = []

  conditions << ["starts-with", "$utf8", ""] if options[:enforce_utf8]
  conditions << ["starts-with", "$key", uploader.key.sub(/#{Regexp.escape(CarrierWaveDirect::Uploader::FILENAME_WILDCARD)}\z/, "")]
  conditions << ["starts-with", "$Content-Type", ""] if uploader.will_include_content_type
  conditions << {"bucket" => uploader.fog_directory}
  conditions << {"acl" => uploader.acl}

  if uploader.use_action_status
    conditions << {"success_action_status" => uploader.success_action_status}
  else
    conditions << {"success_action_redirect" => uploader.success_action_redirect}
  end

  conditions << ["content-length-range", options[:min_file_size], options[:max_file_size]]

  yield conditions if block_given?

  @policy = Base64.encode64(
    {
      'expiration' => (Time.now + options[:expiration]).utc.iso8601,
      'conditions' => conditions
    }.to_json
  ).gsub("\n","")
end

#signatureObject



6
7
8
9
10
11
12
13
# File 'lib/carrierwave_direct/policies/aws_base64_sha1.rb', line 6

def signature
  Base64.encode64(
    OpenSSL::HMAC.digest(
      OpenSSL::Digest.new('sha1'),
      uploader.aws_secret_access_key, policy
    )
  ).gsub("\n", "")
end