dragonfly-s3_data_store 1.1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 350d8e976a1a0035972b02a7f024d982abd176e4
4
- data.tar.gz: 1730399277815a8dce6feb6a89ed280cea18ad90
3
+ metadata.gz: 768cec2575b167242c6c5bf6b02313d61add3dbe
4
+ data.tar.gz: dfa4bc29b433f342556df40ba346a4967b915265
5
5
  SHA512:
6
- metadata.gz: d1708908b4b45d4fcbf5530a1056afe69921a3ef421b3482eb2efb16e921e354a29919395a16b5d347a0fbad43131cf941a90586bf031ab4c420816506a60c36
7
- data.tar.gz: 84e28e6bd5f589c4f41ca2f65db364f8bdd5cc9feaeb002cb814625d6dc343d9f658376aefda1d8604d2e047b808078ee33deab946d0f0fc86da15736c17066f
6
+ metadata.gz: 12c5156cd14a58c7feeeb580cd4d79125071a9bf543df232828c88a6c4e3c5351587aa8d0dfc1a386cbbedf77eadebef2df379820322ef3e9a5b570f322cbd1a
7
+ data.tar.gz: 3dd4be70964435582b15ff3bd2fe15f06e28383dd6e974b63cfb4002639bda5385b0d13ccf83a5e2320afda29fedf92faa958b6a3f2b5780f240ad6ad5f0a814
data/README.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  Amazon AWS S3 data store for use with the [Dragonfly](http://github.com/markevans/dragonfly) gem.
4
4
 
5
+ **NOTE:** version 1.2 saves files into a different directory structure, e.g. '2015/08/03/5bccfdd8-0de2-4efc-b3f3-f4e96bcc4afa/file.png' rather than '2015/08/03/12/03/24/492/file.png'.
6
+
7
+ However this does not affect any functionality and won't break any of your old content!
8
+ It's just more robust.
9
+
5
10
  ## Gemfile
6
11
 
7
12
  ```ruby
@@ -43,7 +48,7 @@ end
43
48
 
44
49
  ### Per-storage options
45
50
  ```ruby
46
- Dragonfly.app.store(some_file, path: 'some/path.txt', headers: {'x-amz-acl' => 'public-read-write'})
51
+ Dragonfly.app.store(some_file, {'some' => 'metadata'}, path: 'some/path.txt', headers: {'x-amz-acl' => 'public-read-write'})
47
52
  ```
48
53
 
49
54
  or
@@ -95,3 +100,9 @@ or with a custom host:
95
100
  ```ruby
96
101
  my_model.attachment.remote_url(host: 'custom.domain') # also configurable for all urls with 'url_host'
97
102
  ```
103
+
104
+ or with other query parameters (needs an expiry):
105
+
106
+ ```ruby
107
+ my_model.attachment.remote_url(expires: 3.days.from_now, query: {'response-content-disposition' => 'attachment'}) # URL that downloads the file
108
+ ```
@@ -1,6 +1,7 @@
1
1
  require 'fog/aws'
2
2
  require 'dragonfly'
3
3
  require 'cgi'
4
+ require 'securerandom'
4
5
 
5
6
  Dragonfly::App.register_datastore(:s3){ Dragonfly::S3DataStore }
6
7
 
@@ -71,8 +72,8 @@ module Dragonfly
71
72
  end
72
73
 
73
74
  def url_for(uid, opts={})
74
- if opts[:expires]
75
- storage.get_object_https_url(bucket_name, full_path(uid), opts[:expires])
75
+ if expires = opts[:expires]
76
+ storage.get_object_https_url(bucket_name, full_path(uid), expires, {:query => opts[:query]})
76
77
  else
77
78
  scheme = opts[:scheme] || url_scheme
78
79
  host = opts[:host] || url_host || (
@@ -136,7 +137,7 @@ module Dragonfly
136
137
  end
137
138
 
138
139
  def generate_uid(name)
139
- "#{Time.now.strftime '%Y/%m/%d/%H/%M/%S'}/#{rand(1000)}/#{name}"
140
+ "#{Time.now.strftime '%Y/%m/%d/%H/%M/%S'}/#{SecureRandom.uuid}/#{name}"
140
141
  end
141
142
 
142
143
  def full_path(uid)
@@ -1,5 +1,5 @@
1
1
  module Dragonfly
2
2
  class S3DataStore
3
- VERSION = "1.1.1"
3
+ VERSION = "1.2"
4
4
  end
5
5
  end
@@ -196,20 +196,6 @@ describe Dragonfly::S3DataStore do
196
196
  @data_store.storage.should_receive(:delete_object).with(BUCKET_NAME, /^some\/path\/.*\/something\.png$/)
197
197
  @data_store.destroy(uid)
198
198
  end
199
-
200
- describe "url_for" do
201
- before do
202
- @uid = @data_store.write(content)
203
- end
204
-
205
- it "returns the uid prefixed with the root_path" do
206
- @data_store.url_for(@uid).should =~ /some\/path\/.*\/something\.png/
207
- end
208
-
209
- it "gives an expiring url" do
210
- @data_store.url_for(@uid, :expires => 1301476942).should =~ /\/some\/path\/.*\/something\.png\?X-Amz-Expires=/
211
- end
212
- end
213
199
  end
214
200
 
215
201
  describe "autocreating the bucket" do
@@ -291,7 +277,12 @@ describe Dragonfly::S3DataStore do
291
277
 
292
278
  it "should give an expiring url" do
293
279
  @data_store.url_for(@uid, :expires => 1301476942).should =~
294
- %r{^https://#{BUCKET_NAME}\.#{@data_store.domain}/some/path/on/s3\?X-Amz-Expires=}
280
+ %r{^https://#{BUCKET_NAME}\.#{@data_store.domain}/some/path/on/s3\?.*X-Amz-Expires=}
281
+ end
282
+
283
+ it "should add query params" do
284
+ @data_store.url_for(@uid, :expires => 1301476942, :query => {'response-content-disposition' => 'attachment'}).should =~
285
+ %r{^https://#{BUCKET_NAME}\.#{@data_store.domain}/some/path/on/s3\?.*response-content-disposition=attachment}
295
286
  end
296
287
 
297
288
  it "should allow for using https" do
@@ -342,12 +333,13 @@ describe Dragonfly::S3DataStore do
342
333
 
343
334
  describe "fog_storage_options" do
344
335
  it "adds options to Fog::Storage object" do
336
+ allow(Fog::Storage).to receive(:new).and_call_original
345
337
  @data_store.fog_storage_options = {:random_option => 'look at me!'}
346
- Fog::Storage.should_receive(:new).with do |hash|
347
- hash[:random_option].should == 'look at me!'
348
- hash[:aws_access_key_id].should match /\w+/
349
- end.and_call_original
350
338
  @data_store.storage
339
+ expect(Fog::Storage).to have_received(:new).with(hash_including(
340
+ :random_option => 'look at me!',
341
+ :aws_access_key_id => anything
342
+ ))
351
343
  end
352
344
  end
353
345
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dragonfly-s3_data_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Evans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
11
+ date: 2015-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dragonfly