Class: S3FileField::S3Uploader

Inherits:
Object
  • Object
show all
Defined in:
lib/s3_file_field/s3_uploader.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original_options = {}) ⇒ S3Uploader

Returns a new instance of S3Uploader.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/s3_file_field/s3_uploader.rb', line 5

def initialize(original_options = {})

  default_options = {
    access_key_id: S3FileField.config.access_key_id,
    secret_access_key: S3FileField.config.secret_access_key,
    bucket: S3FileField.config.bucket,
    acl: "public-read",
    expiration: 10.hours.from_now.utc.iso8601,
    max_file_size: 500.megabytes,
    conditions: [],
    key_starts_with: S3FileField.config.key_starts_with || 'uploads/',
    region: S3FileField.config.region || 's3',
    url: S3FileField.config.url,
    ssl: S3FileField.config.ssl
  }

  @key = original_options[:key]
  @original_options = original_options

  # Remove s3_file_field specific options from original options
  extracted_options = @original_options.extract!(*default_options.keys).
    reject { |k, v| v.nil? }

  @options = default_options.merge(extracted_options)

  unless @options[:access_key_id]
    raise Error.new("Please configure access_key_id option.")
  end

  unless @options[:secret_access_key]
    raise Error.new("Please configure secret_access_key option.")
  end

  if @options[:bucket].nil? && @options[:url].nil?
    raise Error.new("Please configure bucket name or url.")
  end
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



3
4
5
# File 'lib/s3_file_field/s3_uploader.rb', line 3

def options
  @options
end

Instance Method Details

#field_data_optionsObject



47
48
49
50
51
52
53
54
55
56
# File 'lib/s3_file_field/s3_uploader.rb', line 47

def field_data_options
  {
    url: url,
    key: key,
    acl: @options[:acl],
    aws_access_key_id: @options[:access_key_id],
    policy: policy,
    signature: signature
  }.merge(@original_options[:data] || {})
end

#field_optionsObject



43
44
45
# File 'lib/s3_file_field/s3_uploader.rb', line 43

def field_options
  @original_options.merge(data: field_data_options)
end