shrine-google_cloud_storage 3.0.1 → 3.3.0

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
  SHA256:
3
- metadata.gz: '08794b4f3567a2c3b92a4d6eb5e6bcb3c39c1e11ddbc1af9025e71cb62cd42c7'
4
- data.tar.gz: ef6f88db81fa575e99606f18e501d69b2ca8a912e1395434b2d850314ef3abad
3
+ metadata.gz: 021de2771b75b7e440d36788d7d3c45cec306d026c6aa08ed9e8218e69e61c86
4
+ data.tar.gz: cdbf68b610dca3468ba12095b2cff8fd38460593df573d6e8025c571659d9643
5
5
  SHA512:
6
- metadata.gz: f537db521f553056a92b3c607e143bcf7b8b868c580bd5518198c5d88b7088bb28b9173af4a653657f82546439059b12858946ffa2ebe82cdd801d01846c7894
7
- data.tar.gz: a677c3b1588ce6fcbd686bbacae9131b1f9f239035c9fbc7042c59f9f35f21350d0149b097f33c56d55919e28e2cdff7e36b5e083a71ce6cb2a97079168d14c5
6
+ metadata.gz: b088638b0c81d49587b2e9919267167c46de45638a661acee1558f7a017365ca25efc39c163a2e3a61ef0a4d494b527b4c1474d6e1b50c39349b017abbb6a6b9
7
+ data.tar.gz: bd972313c44c20899c4b1dd0b1909051d0b75cfadef0aadc0957c1f54f3741107a8ee3e3425673ae88e55626a4724f64660cbafac876f15cf82e1e4188f0d807
data/README.md CHANGED
@@ -12,7 +12,7 @@ gem "shrine-google_cloud_storage"
12
12
 
13
13
  ## Authentication
14
14
 
15
- The GCS plugin uses the `google-cloud-storage` gem. Please refer to [its documentation for setting up authentication](http://googleapis.github.io/google-cloud-ruby/docs/google-cloud-storage/latest/file.AUTHENTICATION.html).
15
+ The GCS plugin uses the `google-cloud-storage` gem. Please refer to [its documentation for setting up authentication](https://googleapis.dev/ruby/google-cloud-storage/latest/file.AUTHENTICATION.html).
16
16
 
17
17
  ## Usage
18
18
 
@@ -65,7 +65,7 @@ cp .env.sample .env
65
65
 
66
66
  #### Option 2 - manual setup
67
67
 
68
- Create your own bucket and provide variables that allow for [project and credential lookup](http://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-storage/v1.6.0/guides/authentication#projectandcredentiallookup).
68
+ Create your own bucket and provide variables that allow for [project and credential lookup](https://googleapis.dev/ruby/google-cloud-storage/latest/file.AUTHENTICATION.html#project-and-credential-lookup).
69
69
  For example:
70
70
 
71
71
  ```sh
@@ -10,15 +10,22 @@ class Shrine
10
10
  # Initialize a Shrine::Storage for GCS allowing for auto-discovery of the Google::Cloud::Storage client.
11
11
  # @param [String] project Provide if not using auto discovery
12
12
  # @see http://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-storage/v1.6.0/guides/authentication#environmentvariables for information on discovery
13
- def initialize(project: nil, bucket:, prefix: nil, host: nil, default_acl: nil, object_options: {}, credentials: nil)
13
+ def initialize(project: nil, bucket:, prefix: nil, host: nil, default_acl: nil, object_options: {}, credentials: nil, public: false)
14
14
  @project = project
15
15
  @bucket = bucket
16
16
  @prefix = prefix
17
17
  @host = host
18
- @default_acl = default_acl
19
18
  @object_options = object_options
20
19
  @storage = nil
21
20
  @credentials = credentials
21
+
22
+ @default_acl = if public && default_acl && default_acl != "publicRead"
23
+ raise Shrine::Error, "You can not set both public and default_acl"
24
+ elsif public
25
+ "publicRead"
26
+ else
27
+ default_acl
28
+ end
22
29
  end
23
30
 
24
31
  # If the file is an UploadFile from GCS, issues a copy command, otherwise it uploads a file.
@@ -30,7 +37,7 @@ class Shrine
30
37
  file = existing_file.copy(
31
38
  @bucket, # dest_bucket_or_path - the bucket to copy the file to
32
39
  object_name(id), # dest_path - the path to copy the file to in the given bucket
33
- acl: @default_acl
40
+ acl: options.fetch(:acl) { @default_acl }
34
41
  ) do |f|
35
42
  # Workaround a bug in File#copy where the content-type is not copied if you provide a block
36
43
  # See https://github.com/renchap/shrine-google_cloud_storage/issues/36
@@ -45,14 +52,16 @@ class Shrine
45
52
  file
46
53
  else
47
54
  with_file(io) do |file|
48
- get_bucket.create_file(
49
- file,
50
- object_name(id), # path
51
- @object_options.merge(
52
- content_type: shrine_metadata["mime_type"],
53
- acl: @default_acl
54
- ).merge(options)
55
- )
55
+ file_options = @object_options.merge(
56
+ content_type: shrine_metadata["mime_type"],
57
+ acl: options.fetch(:acl) { @default_acl }
58
+ ).merge(options)
59
+
60
+ get_bucket.create_file(
61
+ file,
62
+ object_name(id), # path
63
+ **file_options
64
+ )
56
65
  end
57
66
  end
58
67
  end
@@ -60,12 +69,12 @@ class Shrine
60
69
  # URL to the remote file, accepts options for customizing the URL
61
70
  def url(id, **options)
62
71
  if options.key? :expires
63
- signed_url = storage.signed_url(@bucket, object_name(id), options)
72
+ signed_url = storage.signed_url(@bucket, object_name(id), **options)
64
73
  signed_url.gsub!(/storage.googleapis.com\/#{@bucket}/, @host) if @host
65
74
  signed_url
66
75
  else
67
76
  host = @host || "storage.googleapis.com/#{@bucket}"
68
- "https://#{host}/#{object_name(id)}"
77
+ "https://#{host}/#{Addressable::URI.encode_component(object_name(id), Addressable::URI::CharacterClasses::PATH)}"
69
78
  end
70
79
  end
71
80
 
@@ -157,7 +166,7 @@ class Shrine
157
166
  opts[:project] = @project if @project
158
167
  opts[:credentials] = @credentials if @credentials
159
168
 
160
- @storage = Google::Cloud::Storage.new(opts)
169
+ @storage = Google::Cloud::Storage.new(**opts)
161
170
  end
162
171
 
163
172
  def copyable?(io)
@@ -1,23 +1,31 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "shrine-google_cloud_storage"
3
- gem.version = "3.0.1"
3
+ gem.version = "3.3.0"
4
4
 
5
- gem.required_ruby_version = ">= 2.1"
5
+ gem.required_ruby_version = ">= 2.6"
6
6
 
7
7
  gem.summary = "Provides Google Cloud Storage storage for Shrine."
8
8
  gem.homepage = "https://github.com/renchap/shrine-google_cloud_storage"
9
9
  gem.authors = ["Renaud Chaput"]
10
10
  gem.email = ["renchap@gmail.com"]
11
11
  gem.license = "MIT"
12
+ gem.metadata = {
13
+ "bug_tracker_uri" => "https://github.com/renchap/shrine-google_cloud_storage/issues",
14
+ "changelog_uri" => "https://github.com/renchap/shrine-google_cloud_storage/blob/main/CHANGELOG.md",
15
+ "homepage_uri" => "https://github.com/renchap/shrine-google_cloud_storage/",
16
+ "source_code_uri" => "https://github.com/renchap/shrine-google_cloud_storage/",
17
+ "rubygems_mfa_required" => "true",
18
+ }
12
19
 
13
20
  gem.files = Dir["README.md", "LICENSE.txt", "lib/**/*.rb", "shrine-google_cloud_storage.gemspec"]
14
21
  gem.require_path = "lib"
15
22
 
16
23
  gem.add_dependency "shrine", "~> 3.0"
17
24
  gem.add_dependency "google-cloud-storage", "~> 1.6"
25
+ gem.add_dependency "addressable" # no version constraint to use the same as `google-cloud-storage`
18
26
 
19
27
  gem.add_development_dependency "rake"
20
28
  gem.add_development_dependency "minitest"
21
29
  gem.add_development_dependency "dotenv"
22
- gem.add_development_dependency "http", "~> 4.0"
30
+ gem.add_development_dependency "http", "~> 5.0"
23
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shrine-google_cloud_storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renaud Chaput
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-02 00:00:00.000000000 Z
11
+ date: 2022-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shrine
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: addressable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,15 +100,15 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '4.0'
103
+ version: '5.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '4.0'
97
- description:
110
+ version: '5.0'
111
+ description:
98
112
  email:
99
113
  - renchap@gmail.com
100
114
  executables: []
@@ -107,8 +121,13 @@ files:
107
121
  homepage: https://github.com/renchap/shrine-google_cloud_storage
108
122
  licenses:
109
123
  - MIT
110
- metadata: {}
111
- post_install_message:
124
+ metadata:
125
+ bug_tracker_uri: https://github.com/renchap/shrine-google_cloud_storage/issues
126
+ changelog_uri: https://github.com/renchap/shrine-google_cloud_storage/blob/main/CHANGELOG.md
127
+ homepage_uri: https://github.com/renchap/shrine-google_cloud_storage/
128
+ source_code_uri: https://github.com/renchap/shrine-google_cloud_storage/
129
+ rubygems_mfa_required: 'true'
130
+ post_install_message:
112
131
  rdoc_options: []
113
132
  require_paths:
114
133
  - lib
@@ -116,15 +135,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
135
  requirements:
117
136
  - - ">="
118
137
  - !ruby/object:Gem::Version
119
- version: '2.1'
138
+ version: '2.6'
120
139
  required_rubygems_version: !ruby/object:Gem::Requirement
121
140
  requirements:
122
141
  - - ">="
123
142
  - !ruby/object:Gem::Version
124
143
  version: '0'
125
144
  requirements: []
126
- rubygems_version: 3.0.3
127
- signing_key:
145
+ rubygems_version: 3.3.7
146
+ signing_key:
128
147
  specification_version: 4
129
148
  summary: Provides Google Cloud Storage storage for Shrine.
130
149
  test_files: []