shrine-fog 1.1.0 → 2.0.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
  SHA256:
3
- metadata.gz: 18afd919594ff4a696493cc3088ea1a76fc1f84d9da3a5abf929b44c4782bcee
4
- data.tar.gz: 96484cd28138fb048e7c3663dfd825ed07c83cd72eacf9c554255c90200062fc
3
+ metadata.gz: 1b3228745b8294ae999e783d9e5547be47cf31c67d5dd9ad40f98133b5739ff9
4
+ data.tar.gz: b5882ca2581c9adf8ec8570c4f758d9ec89f1c958a5c8a657f4fdf3b70b5d54d
5
5
  SHA512:
6
- metadata.gz: 541a93eb5c0f74ee9fcdc04d43dc9e0d787f928a01f514343236c378a65016c85354cf4ecf4260a6fd78fc09a3ca74fef039985c8fa0c9ebc3d7f84a15bb8d2d
7
- data.tar.gz: ec0f703e43d33c258c554b317b34fe467c39583b0eba1b83e0579481342a382dac699cb1c085aed2145e4f9fa599eb6ab04830d0aed2425aa154e8c5416a81ba
6
+ metadata.gz: 7a82144eeb24089ea7a6b4d9e9b96b226a305e52459982e183647ba8068fe62d29409e2616a0a2f40740501c76fda704cd25c1538aff39e1028008f4c8aef30d
7
+ data.tar.gz: '087f8ca4c9325a74eb5a13fc428be94cd7094023914ae7c394265b58d462d7c2cb8b81429cd3ac960390b39dd3dd9e0a60a1ab73b32ba5989a99510ff536b058'
data/README.md CHANGED
@@ -52,23 +52,43 @@ instead of reuploaded.
52
52
 
53
53
  ### URLs
54
54
 
55
- By default the shrine-fog will generate public unsigned URLs, but if you want
56
- to change that tell Fog not to store files publicly, you can set `:public` to
57
- false:
55
+ By default shrine-fog will generate signed expiring URLs.
58
56
 
59
57
  ```rb
60
- fog = Shrine::Storage::Fog.new(**fog_options)
61
- fog.url("image.jpg") #=> "https://my-bucket.s3-eu-west-1.amazonaws.com/image.jpg"
58
+ uploaded_file.url("image.jpg") #=> "https://my-bucket.s3-eu-west-1.amazonaws.com/foo?X-Amz-Expires=3600&X-Amz-Date=20151217T102105Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIJF55TMZZY45UT6Q/20151217/eu-west-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=6908d8cd85ce4469f141a36955611f26d29ae7919eb8a6cba28f9194a92d96c3"
59
+ ```
60
+
61
+ You can modify the URL expiration date via `:expires` (the default is `3600`):
62
+
63
+ ```rb
64
+ uploaded_file.url("image.jpg", expires: 90) #=> "https://my-bucket.s3-eu-west-1.amazonaws.com/foo?X-Amz-Expires=90&X-Amz-Date=20151217T102105Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIJF55TMZZY45UT6Q/20151217/eu-west-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=6908d8cd85ce4469f141a36955611f26d29ae7919eb8a6cba28f9194a92d96c3"
65
+ ```
66
+
67
+ If the files you're uploading are public readable (e.g. you're passing the
68
+ correct ACL on upload, `acl: "publicRead"` for fog-google), and you want to
69
+ generate public URLs, you can pass `public: true` to `#url`:
70
+
71
+ ```rb
72
+ uploaded_file.url("image.jpg", public: true) #=> "https://my-bucket.s3-eu-west-1.amazonaws.com/image.jpg"
73
+ ```
74
+
75
+ Any additional URL options will be forwarded directly to the provider's
76
+ `File#url` method.
77
+
78
+ You can use the `default_url_options` Shrine plugin to set default URL options.
62
79
 
63
- fog = Shrine::Storage::Fog.new(public: false, **fog_options)
64
- fog.url("image.jpg") #=> "https://my-bucket.s3-eu-west-1.amazonaws.com/foo?X-Amz-Expires=3600&X-Amz-Date=20151217T102105Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIJF55TMZZY45UT6Q/20151217/eu-west-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=6908d8cd85ce4469f141a36955611f26d29ae7919eb8a6cba28f9194a92d96c3"
80
+ ### Upload options
81
+
82
+ Dynamic upload options can be passed via the `upload_options` plugin:
83
+
84
+ ```rb
85
+ Shrine.plugin :upload_options, store: { acl: "publicRead" }
65
86
  ```
66
87
 
67
- The signed URLs by default expire in 1 hour, you set `:expires` to number of
68
- seconds you want the URL to expire:
88
+ You can also specify default upload options on storage initialization:
69
89
 
70
90
  ```rb
71
- Shrine::Storage::Fog.new(expires: 24*60*60, **fog_options) # expires in 1 day
91
+ Shrine::Storage::Fog.new(upload_options: { acl: "publicRead" }, **options)
72
92
  ```
73
93
 
74
94
  ### S3 or Filesystem
@@ -7,12 +7,11 @@ class Shrine
7
7
  class Fog
8
8
  attr_reader :connection, :directory, :prefix
9
9
 
10
- def initialize(directory:, prefix: nil, public: true, expires: 3600, connection: nil, **options)
10
+ def initialize(directory:, prefix: nil, connection: nil, upload_options: {}, **options)
11
11
  @connection = connection || ::Fog::Storage.new(options)
12
12
  @directory = @connection.directories.new(key: directory)
13
13
  @prefix = prefix
14
- @public = public
15
- @expires = expires
14
+ @upload_options = upload_options
16
15
  end
17
16
 
18
17
  def upload(io, id, **upload_options)
@@ -35,10 +34,11 @@ class Shrine
35
34
  file(id).destroy
36
35
  end
37
36
 
38
- def url(id, **options)
39
- signed_url = file(id).url(Time.now + @expires, **options)
40
- if @public
41
- uri = URI(signed_url)
37
+ def url(id, public: false, expires: 3600, **options)
38
+ signed_url = file(id).url(Time.now.utc + expires, *[**options])
39
+
40
+ if public
41
+ uri = URI.parse(signed_url)
42
42
  uri.query = nil
43
43
  uri.to_s
44
44
  else
@@ -79,11 +79,11 @@ class Shrine
79
79
  end
80
80
 
81
81
  def put(io, id, shrine_metadata: {}, **upload_options)
82
- options = {key: path(id), body: io, public: @public}
83
- options[:content_type] = shrine_metadata["mime_type"]
82
+ options = { content_type: shrine_metadata["mime_type"] }
83
+ options.update(@upload_options)
84
84
  options.update(upload_options)
85
85
 
86
- directory.files.create(options)
86
+ directory.files.create(key: path(id), body: io, **options)
87
87
  end
88
88
 
89
89
  def copy(io, id, **upload_options)
data/shrine-fog.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "shrine-fog"
3
- gem.version = "1.1.0"
3
+ gem.version = "2.0.0"
4
4
 
5
5
  gem.required_ruby_version = ">= 2.1"
6
6
 
@@ -14,9 +14,9 @@ Gem::Specification.new do |gem|
14
14
  gem.files = Dir["README.md", "LICENSE.txt", "lib/**/*.rb", "*.gemspec"]
15
15
  gem.require_path = "lib"
16
16
 
17
- gem.add_dependency "shrine", "~> 2.2"
17
+ gem.add_dependency "shrine", ">= 2.2", "< 4"
18
18
  gem.add_dependency "down", "~> 4.4"
19
- gem.add_dependency "http", "~> 3.2"
19
+ gem.add_dependency "http", ">= 3.2", "< 5"
20
20
 
21
21
  gem.add_development_dependency "rake"
22
22
  gem.add_development_dependency "fog-aws"
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shrine-fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-29 00:00:00.000000000 Z
11
+ date: 2019-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shrine
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '2.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: down
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +48,22 @@ dependencies:
42
48
  name: http
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '3.2'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '5'
48
57
  type: :runtime
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
52
- - - "~>"
61
+ - - ">="
53
62
  - !ruby/object:Gem::Version
54
63
  version: '3.2'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '5'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: rake
57
69
  requirement: !ruby/object:Gem::Requirement
@@ -152,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
164
  - !ruby/object:Gem::Version
153
165
  version: '0'
154
166
  requirements: []
155
- rubyforge_project:
156
- rubygems_version: 2.7.6
167
+ rubygems_version: 3.0.3
157
168
  signing_key:
158
169
  specification_version: 4
159
170
  summary: Provides Fog storage for Shrine.