s3_file_field 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e91d0fe38036204121030961fcdbdecc3d1894e8
4
- data.tar.gz: 65089c91fcc1692718f6398424e48c473124c638
3
+ metadata.gz: 771a79d8a1002b47f2dfcf1f24022292a5212590
4
+ data.tar.gz: 4ebc755adee94a38cd0baac8dfb6657b9f637a2d
5
5
  SHA512:
6
- metadata.gz: a47af2e0ae5bc848109a16db1631dbd9a57eb75129e96fa74f7d12be6bbc2efd965646da4da014d126fe14ec1c48056be7601ded752ad4b9b81d1cfac3600f49
7
- data.tar.gz: 6317d5350477e4f5fc340fc121cedb1103d4144c0149a0545e53c8c3365dd214e67856dc682791a4da4747cdd0ac3a3c1e84514cef17e6dfb3a57922dbb5eaef
6
+ metadata.gz: d5e2da78facafbcd31cf7d597e5bed3cf335ae20efcfc2864b08a4035d2a6c4f18b60426bffe0d1437bb1354f29ce35256b8c8c8b48741e231e0979939807dc9
7
+ data.tar.gz: cdd64aa49a7b27bb78974baab71c2796e41cb092ff3492e6298af99fe39d88902e3eccd3a03dbe0de19ea1a9240aef194acfada54d68bea25f7a78b635e2a764
data/README.md CHANGED
@@ -7,7 +7,7 @@ jQuery File Upload extension for direct uploading to Amazon S3 using CORS
7
7
 
8
8
  Works as an extension of [jQuery File Upload](http://blueimp.github.io/jQuery-File-Upload/) JavaScript plugin and supports IE 7-10.
9
9
 
10
- Note: Since 1.0.2 gem works with both Rails 3 and Rails 4.
10
+ It supports multiple upload, and per-input configuration.
11
11
 
12
12
  ## Installation
13
13
 
@@ -63,7 +63,7 @@ jQuery.fn.S3FileField = (options) ->
63
63
  if add? then add(e, data) else data.submit()
64
64
 
65
65
  done: (e, data) ->
66
- data.result = build_content_object data.files[0]
66
+ data.result = build_content_object(data.files[0], data.result)
67
67
  done(e, data) if done?
68
68
 
69
69
  fail: (e, data) ->
@@ -85,11 +85,24 @@ jQuery.fn.S3FileField = (options) ->
85
85
 
86
86
  jQuery.extend settings, options
87
87
 
88
- build_content_object = (file) ->
89
- domain = settings.url.replace(/\/+$/, '').replace(/^(https?:)?/, 'https:')
88
+ to_s3_filename = (filename) ->
89
+ trimmed = filename.replace(/^\s+|\s+$/g,'')
90
+ strip_before_slash = trimmed.split('\\').slice(-1)[0]
91
+ double_encode_quote = strip_before_slash.replace('"', '%22')
92
+ encodeURIComponent(double_encode_quote)
93
+
94
+ build_content_object = (file, result) ->
95
+
90
96
  content = {}
91
- content.filepath = finalFormData[file.unique_id]['key'].replace('/${filename}', '')
92
- content.url = domain + '/' + content.filepath + '/' + file.name
97
+
98
+ if result # Use the S3 response to set the URL to avoid character encodings bugs
99
+ content.url = $(result).find("Location").text()
100
+ content.filepath = $('<a />').attr('href', content.url)[0].pathname
101
+ else # IE <= 9 returns null result so hack is necessary
102
+ domain = settings.url.replace(/\/+$/, '').replace(/^(https?:)?/, 'https:')
103
+ content.filepath = finalFormData[file.unique_id]['key'].replace('/${filename}', '')
104
+ content.url = domain + '/' + content.filepath + '/' + to_s3_filename(file.name)
105
+
93
106
  content.filename = file.name
94
107
  content.filesize = file.size if 'size' of file
95
108
  content.filetype = file.type if 'type' of file
@@ -4,7 +4,7 @@ module S3FileField
4
4
  class Config
5
5
  include Singleton
6
6
 
7
- ATTRIBUTES = [:access_key_id, :secret_access_key, :bucket, :prefix_to_clean, :region, :url]
7
+ ATTRIBUTES = [:access_key_id, :secret_access_key, :bucket, :prefix_to_clean, :region, :url, :key_starts_with]
8
8
 
9
9
  attr_accessor *ATTRIBUTES
10
10
  end
@@ -12,7 +12,8 @@ module S3FileField
12
12
  expiration: 10.hours.from_now.utc.iso8601,
13
13
  max_file_size: 500.megabytes,
14
14
  conditions: [],
15
- key_starts_with: 'uploads/'
15
+ key_starts_with: S3FileField.config.key_starts_with || 'uploads/',
16
+ region: S3FileField.config.region || 's3'
16
17
  }
17
18
 
18
19
  @key = original_options[:key]
@@ -59,7 +60,7 @@ module S3FileField
59
60
  end
60
61
 
61
62
  def url
62
- "//#{@options[:bucket]}.s3.amazonaws.com/"
63
+ "//#{@options[:bucket]}.#{@options[:region]}.amazonaws.com/"
63
64
  end
64
65
 
65
66
  def policy
@@ -84,7 +85,7 @@ module S3FileField
84
85
  def signature
85
86
  Base64.encode64(
86
87
  OpenSSL::HMAC.digest(
87
- OpenSSL::Digest::Digest.new('sha1'),
88
+ OpenSSL::Digest.new('sha1'),
88
89
  @options[:secret_access_key], policy
89
90
  )
90
91
  ).gsub("\n", '')
@@ -1,3 +1,3 @@
1
1
  module S3FileField
2
- VERSION = "1.0.7"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3_file_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Stankiewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-26 00:00:00.000000000 Z
11
+ date: 2014-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -130,15 +130,15 @@ executables: []
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - README.md
134
+ - app/assets/javascripts/s3_file_field.js.coffee
135
+ - lib/s3_file_field.rb
133
136
  - lib/s3_file_field/config_aws.rb
134
137
  - lib/s3_file_field/engine.rb
135
138
  - lib/s3_file_field/form_helper.rb
136
139
  - lib/s3_file_field/railtie.rb
137
140
  - lib/s3_file_field/s3_uploader.rb
138
141
  - lib/s3_file_field/version.rb
139
- - lib/s3_file_field.rb
140
- - app/assets/javascripts/s3_file_field.js.coffee
141
- - README.md
142
142
  homepage: https://github.com/sheerun/s3_file_field
143
143
  licenses:
144
144
  - MIT
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  version: '0'
160
160
  requirements: []
161
161
  rubyforge_project:
162
- rubygems_version: 2.0.3
162
+ rubygems_version: 2.2.1
163
163
  signing_key:
164
164
  specification_version: 4
165
165
  summary: jQuery File Upload extension for direct uploading to Amazon S3 using CORS