resizing 1.0.3 → 1.1.0.pre

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +2 -13
  3. data/.gitignore +0 -6
  4. data/Gemfile +2 -10
  5. data/README.md +32 -59
  6. data/lib/resizing/active_storage/service/resizing_service.rb +2 -6
  7. data/lib/resizing/carrier_wave/storage/file.rb +24 -68
  8. data/lib/resizing/carrier_wave/storage/remote.rb +3 -7
  9. data/lib/resizing/carrier_wave.rb +11 -19
  10. data/lib/resizing/client.rb +24 -40
  11. data/lib/resizing/configurable.rb +1 -1
  12. data/lib/resizing/configuration.rb +16 -6
  13. data/lib/resizing/http_clientable.rb +3 -3
  14. data/lib/resizing/mock_client.rb +5 -6
  15. data/lib/resizing/public_id.rb +4 -5
  16. data/lib/resizing/version.rb +1 -1
  17. data/lib/resizing/video/client.rb +116 -0
  18. data/lib/resizing/video.rb +8 -0
  19. data/lib/resizing.rb +12 -24
  20. data/resizing.gemspec +11 -9
  21. data/test/resizing/carrier_wave/storage/file_test.rb +8 -149
  22. data/test/resizing/carrier_wave/storage/remote_test.rb +0 -75
  23. data/test/resizing/carrier_wave_test.rb +32 -373
  24. data/test/resizing/client_test.rb +11 -96
  25. data/test/resizing/configuration_test.rb +2 -118
  26. data/test/resizing/public_id_test.rb +1 -1
  27. data/test/resizing/video/client_test.rb +158 -0
  28. data/test/resizing_test.rb +0 -16
  29. data/test/test_helper.rb +9 -148
  30. data/test/vcr/video/metadata/success.yml +47 -0
  31. data/test/vcr/video/prepare/success.yml +47 -0
  32. data/test/vcr/video/upload_completed/success.yml +47 -0
  33. metadata +43 -56
  34. data/lib/resizing/active_storage/service.rb +0 -9
  35. data/lib/resizing/active_storage.rb +0 -7
  36. data/test/resizing/active_storage_service_test.rb +0 -98
  37. data/test/resizing/configurable_test.rb +0 -82
  38. data/test/resizing/constants_test.rb +0 -25
  39. data/test/resizing/error_test.rb +0 -73
  40. data/test/resizing/http_clientable_test.rb +0 -84
  41. data/test/resizing/mock_client_test.rb +0 -75
  42. data/test/resizing_module_test.rb +0 -206
  43. data/test/vcr/carrier_wave_test/update_image.yml +0 -63
  44. /data/{bin → exe}/console +0 -0
  45. /data/{bin → exe}/generate-changelog +0 -0
  46. /data/{bin → exe}/setup +0 -0
metadata CHANGED
@@ -1,83 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resizing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junichiro Kasuya
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2026-01-31 00:00:00.000000000 Z
11
+ date: 2024-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '3'
19
+ version: '2.3'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '3'
26
+ version: '2.3'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: faraday-multipart
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: '1.0'
33
+ version: '0'
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: '1.0'
40
+ version: '0'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: rails
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - ">="
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
47
  version: '6.0'
54
- - - "<"
55
- - !ruby/object:Gem::Version
56
- version: '7.1'
57
48
  type: :development
58
49
  prerelease: false
59
50
  version_requirements: !ruby/object:Gem::Requirement
60
51
  requirements:
61
- - - ">="
52
+ - - "~>"
62
53
  - !ruby/object:Gem::Version
63
54
  version: '6.0'
64
- - - "<"
65
- - !ruby/object:Gem::Version
66
- version: '7.1'
67
55
  - !ruby/object:Gem::Dependency
68
56
  name: carrierwave
69
57
  requirement: !ruby/object:Gem::Requirement
70
58
  requirements:
71
59
  - - "~>"
72
60
  - !ruby/object:Gem::Version
73
- version: 1.3.2
61
+ version: 2.2.5
74
62
  type: :development
75
63
  prerelease: false
76
64
  version_requirements: !ruby/object:Gem::Requirement
77
65
  requirements:
78
66
  - - "~>"
79
67
  - !ruby/object:Gem::Version
80
- version: 1.3.2
68
+ version: 2.2.5
81
69
  - !ruby/object:Gem::Dependency
82
70
  name: fog-aws
83
71
  requirement: !ruby/object:Gem::Requirement
@@ -96,16 +84,16 @@ dependencies:
96
84
  name: minitest
97
85
  requirement: !ruby/object:Gem::Requirement
98
86
  requirements:
99
- - - "~>"
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
- version: '5.16'
89
+ version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
93
  requirements:
106
- - - "~>"
94
+ - - ">="
107
95
  - !ruby/object:Gem::Version
108
- version: '5.16'
96
+ version: '0'
109
97
  - !ruby/object:Gem::Dependency
110
98
  name: minitest-ci
111
99
  requirement: !ruby/object:Gem::Requirement
@@ -121,7 +109,7 @@ dependencies:
121
109
  - !ruby/object:Gem::Version
122
110
  version: '0'
123
111
  - !ruby/object:Gem::Dependency
124
- name: mysql2
112
+ name: rubocop
125
113
  requirement: !ruby/object:Gem::Requirement
126
114
  requirements:
127
115
  - - ">="
@@ -135,7 +123,7 @@ dependencies:
135
123
  - !ruby/object:Gem::Version
136
124
  version: '0'
137
125
  - !ruby/object:Gem::Dependency
138
- name: rubocop
126
+ name: timecop
139
127
  requirement: !ruby/object:Gem::Requirement
140
128
  requirements:
141
129
  - - ">="
@@ -149,7 +137,7 @@ dependencies:
149
137
  - !ruby/object:Gem::Version
150
138
  version: '0'
151
139
  - !ruby/object:Gem::Dependency
152
- name: simplecov
140
+ name: vcr
153
141
  requirement: !ruby/object:Gem::Requirement
154
142
  requirements:
155
143
  - - ">="
@@ -163,7 +151,7 @@ dependencies:
163
151
  - !ruby/object:Gem::Version
164
152
  version: '0'
165
153
  - !ruby/object:Gem::Dependency
166
- name: simplecov-cobertura
154
+ name: mysql2
167
155
  requirement: !ruby/object:Gem::Requirement
168
156
  requirements:
169
157
  - - ">="
@@ -177,7 +165,7 @@ dependencies:
177
165
  - !ruby/object:Gem::Version
178
166
  version: '0'
179
167
  - !ruby/object:Gem::Dependency
180
- name: timecop
168
+ name: simplecov
181
169
  requirement: !ruby/object:Gem::Requirement
182
170
  requirements:
183
171
  - - ">="
@@ -191,7 +179,7 @@ dependencies:
191
179
  - !ruby/object:Gem::Version
192
180
  version: '0'
193
181
  - !ruby/object:Gem::Dependency
194
- name: vcr
182
+ name: simplecov-cobertura
195
183
  requirement: !ruby/object:Gem::Requirement
196
184
  requirements:
197
185
  - - ">="
@@ -207,7 +195,10 @@ dependencies:
207
195
  description: 'Client and utilities for Resizing '
208
196
  email:
209
197
  - junichiro.kasuya@gmail.com
210
- executables: []
198
+ executables:
199
+ - console
200
+ - generate-changelog
201
+ - setup
211
202
  extensions: []
212
203
  extra_rdoc_files: []
213
204
  files:
@@ -219,13 +210,11 @@ files:
219
210
  - LICENSE.txt
220
211
  - README.md
221
212
  - Rakefile
222
- - bin/console
223
- - bin/generate-changelog
224
- - bin/setup
225
213
  - docker-compose.yml
214
+ - exe/console
215
+ - exe/generate-changelog
216
+ - exe/setup
226
217
  - lib/resizing.rb
227
- - lib/resizing/active_storage.rb
228
- - lib/resizing/active_storage/service.rb
229
218
  - lib/resizing/active_storage/service/resizing_service.rb
230
219
  - lib/resizing/carrier_wave.rb
231
220
  - lib/resizing/carrier_wave/storage/file.rb
@@ -238,32 +227,30 @@ files:
238
227
  - lib/resizing/mock_client.rb
239
228
  - lib/resizing/public_id.rb
240
229
  - lib/resizing/version.rb
230
+ - lib/resizing/video.rb
231
+ - lib/resizing/video/client.rb
241
232
  - resizing.gemspec
242
233
  - test/data/images/empty_file.jpg
243
234
  - test/data/images/sample1.jpg
244
- - test/resizing/active_storage_service_test.rb
245
235
  - test/resizing/carrier_wave/storage/file_test.rb
246
236
  - test/resizing/carrier_wave/storage/remote_test.rb
247
237
  - test/resizing/carrier_wave_test.rb
248
238
  - test/resizing/client_test.rb
249
- - test/resizing/configurable_test.rb
250
239
  - test/resizing/configuration_test.rb
251
- - test/resizing/constants_test.rb
252
- - test/resizing/error_test.rb
253
- - test/resizing/http_clientable_test.rb
254
- - test/resizing/mock_client_test.rb
255
240
  - test/resizing/public_id_test.rb
256
- - test/resizing_module_test.rb
241
+ - test/resizing/video/client_test.rb
257
242
  - test/resizing_test.rb
258
243
  - test/test_helper.rb
259
244
  - test/vcr/carrier_wave_test/remove_resizing_picture.yml
260
245
  - test/vcr/carrier_wave_test/save.yml
261
- - test/vcr/carrier_wave_test/update_image.yml
262
246
  - test/vcr/client/delete.yml
263
247
  - test/vcr/client/error.yml
264
248
  - test/vcr/client/metadata.yml
265
249
  - test/vcr/client/post.yml
266
250
  - test/vcr/client/put.yml
251
+ - test/vcr/video/metadata/success.yml
252
+ - test/vcr/video/prepare/success.yml
253
+ - test/vcr/video/upload_completed/success.yml
267
254
  homepage: https://github.com/jksy/resizing-gem
268
255
  licenses:
269
256
  - MIT
@@ -271,7 +258,7 @@ metadata:
271
258
  allowed_push_host: https://rubygems.org
272
259
  homepage_uri: https://github.com/jksy/resizing-gem
273
260
  source_code_uri: https://github.com/jksy/resizing-gem.
274
- post_install_message:
261
+ post_install_message:
275
262
  rdoc_options: []
276
263
  require_paths:
277
264
  - lib
@@ -279,15 +266,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
266
  requirements:
280
267
  - - ">="
281
268
  - !ruby/object:Gem::Version
282
- version: 3.0.0
269
+ version: 2.3.0
283
270
  required_rubygems_version: !ruby/object:Gem::Requirement
284
271
  requirements:
285
- - - ">="
272
+ - - ">"
286
273
  - !ruby/object:Gem::Version
287
- version: '0'
274
+ version: 1.3.1
288
275
  requirements: []
289
- rubygems_version: 3.3.27
290
- signing_key:
276
+ rubygems_version: 3.1.6
277
+ signing_key:
291
278
  specification_version: 4
292
279
  summary: Client and utilities for Resizing
293
280
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Resizing
4
- module ActiveStorage
5
- module Service
6
- autoload :ResizingService, 'resizing/active_storage/service/resizing_service'
7
- end
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Resizing
4
- module ActiveStorage
5
- autoload :Service, 'resizing/active_storage/service'
6
- end
7
- end
@@ -1,98 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- module ActiveStorage
7
- module Service
8
- class ResizingServiceTest < Minitest::Test
9
- def setup
10
- @service = Resizing::ActiveStorage::Service::ResizingService.new
11
- end
12
-
13
- def teardown
14
- # NOP
15
- end
16
-
17
- def test_service_initialization
18
- assert_instance_of Resizing::ActiveStorage::Service::ResizingService, @service
19
- end
20
-
21
- def test_upload_raises_not_implemented_error
22
- assert_raises NotImplementedError do
23
- @service.upload('test_key', StringIO.new('test data'))
24
- end
25
- end
26
-
27
- def test_download_raises_not_implemented_error
28
- assert_raises NotImplementedError do
29
- @service.download('test_key')
30
- end
31
- end
32
-
33
- def test_download_chunk_raises_not_implemented_error
34
- assert_raises NotImplementedError do
35
- @service.download_chunk('test_key', 0..99)
36
- end
37
- end
38
-
39
- def test_delete_raises_not_implemented_error
40
- assert_raises NotImplementedError do
41
- @service.delete('test_key')
42
- end
43
- end
44
-
45
- def test_exist_raises_not_implemented_error
46
- assert_raises NotImplementedError do
47
- @service.exist?('test_key')
48
- end
49
- end
50
-
51
- def test_url_for_direct_upload_raises_not_implemented_error
52
- assert_raises NotImplementedError do
53
- @service.url_for_direct_upload(
54
- 'test_key',
55
- expires_in: 3600,
56
- content_type: 'image/png',
57
- conteont_length: 1024,
58
- checksum: 'test_checksum'
59
- )
60
- end
61
- end
62
-
63
- def test_headers_for_direct_upload_raises_not_implemented_error
64
- assert_raises NotImplementedError do
65
- @service.headers_for_direct_upload(
66
- 'test_key',
67
- content_type: 'image/png',
68
- checksum: 'test_checksum'
69
- )
70
- end
71
- end
72
-
73
- def test_private_url_raises_not_implemented_error
74
- assert_raises NotImplementedError do
75
- @service.send(
76
- :private_url,
77
- 'test_key',
78
- expires_in: 3600,
79
- filename: 'test.png',
80
- content_type: 'image/png',
81
- disposition: :attachment
82
- )
83
- end
84
- end
85
-
86
- def test_public_url_raises_not_implemented_error
87
- assert_raises NotImplementedError do
88
- @service.send(
89
- :public_url,
90
- 'test_key',
91
- filename: 'test.png'
92
- )
93
- end
94
- end
95
- end
96
- end
97
- end
98
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ConfigurableTest < Minitest::Test
7
- class TestConfigurable
8
- include Configurable
9
-
10
- def initialize(config = nil)
11
- initialize_config(config)
12
- end
13
- end
14
-
15
- def setup
16
- # NOP
17
- end
18
-
19
- def teardown
20
- # NOP
21
- end
22
-
23
- def test_initialize_config_with_configuration_object
24
- config = Configuration.new(
25
- image_host: 'https://test.example.com',
26
- project_id: 'test_id',
27
- secret_token: 'test_token'
28
- )
29
- obj = TestConfigurable.new(config)
30
-
31
- assert_equal config, obj.config
32
- end
33
-
34
- def test_initialize_config_with_nil_uses_global_configure
35
- Resizing.configure = Configuration.new(
36
- image_host: 'https://global.example.com',
37
- project_id: 'global_id',
38
- secret_token: 'global_token'
39
- )
40
-
41
- obj = TestConfigurable.new(nil)
42
-
43
- assert_equal Resizing.configure.image_host, obj.config.image_host
44
- end
45
-
46
- def test_initialize_config_with_hash
47
- config_hash = {
48
- image_host: 'https://hash.example.com',
49
- project_id: 'hash_id',
50
- secret_token: 'hash_token'
51
- }
52
- obj = TestConfigurable.new(config_hash)
53
-
54
- assert_equal 'https://hash.example.com', obj.config.image_host
55
- assert_equal 'hash_id', obj.config.project_id
56
- end
57
-
58
- def test_config_is_accessible
59
- config = Configuration.new(
60
- image_host: 'https://test.example.com',
61
- project_id: 'test_id',
62
- secret_token: 'test_token'
63
- )
64
- obj = TestConfigurable.new(config)
65
-
66
- assert_instance_of Configuration, obj.config
67
- end
68
-
69
- def test_attr_reader_config_is_defined
70
- config = Configuration.new(
71
- image_host: 'https://test.example.com',
72
- project_id: 'test_id',
73
- secret_token: 'test_token'
74
- )
75
- obj = TestConfigurable.new(config)
76
-
77
- # Verify that config is accessible as a reader
78
- assert obj.respond_to?(:config)
79
- assert !obj.respond_to?(:config=)
80
- end
81
- end
82
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ConstantsTest < Minitest::Test
7
- def test_http_status_ok_is_defined
8
- assert_equal 200, Resizing::Constants::HTTP_STATUS_OK
9
- end
10
-
11
- def test_http_status_created_is_defined
12
- assert_equal 201, Resizing::Constants::HTTP_STATUS_CREATED
13
- end
14
-
15
- def test_http_status_not_found_is_defined
16
- assert_equal 404, Resizing::Constants::HTTP_STATUS_NOT_FOUND
17
- end
18
-
19
- def test_constants_are_integers
20
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_OK
21
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_CREATED
22
- assert_instance_of Integer, Resizing::Constants::HTTP_STATUS_NOT_FOUND
23
- end
24
- end
25
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class ErrorTest < Minitest::Test
7
- def test_error_is_standard_error_subclass
8
- assert Resizing::Error < StandardError
9
- end
10
-
11
- def test_configuration_error_is_error_subclass
12
- assert Resizing::ConfigurationError < Resizing::Error
13
- end
14
-
15
- def test_api_error_is_error_subclass
16
- assert Resizing::APIError < Resizing::Error
17
- end
18
-
19
- def test_api_error_has_decoded_body_accessor
20
- error = Resizing::APIError.new('test error')
21
-
22
- assert_respond_to error, :decoded_body
23
- assert_respond_to error, :decoded_body=
24
- end
25
-
26
- def test_api_error_decoded_body_defaults_to_empty_hash
27
- error = Resizing::APIError.new('test error')
28
-
29
- assert_equal({}, error.decoded_body)
30
- end
31
-
32
- def test_api_error_decoded_body_can_be_set_with_hash
33
- error = Resizing::APIError.new('test error')
34
- body = { 'error' => 'test', 'code' => 400 }
35
-
36
- error.decoded_body = body
37
-
38
- assert_equal body, error.decoded_body
39
- end
40
-
41
- def test_api_error_decoded_body_raises_argument_error_for_non_hash
42
- error = Resizing::APIError.new('test error')
43
-
44
- assert_raises ArgumentError do
45
- error.decoded_body = 'not a hash'
46
- end
47
- end
48
-
49
- def test_api_error_decoded_body_raises_argument_error_for_array
50
- error = Resizing::APIError.new('test error')
51
-
52
- assert_raises ArgumentError do
53
- error.decoded_body = %w[not a hash]
54
- end
55
- end
56
-
57
- def test_configuration_error_can_be_raised_with_message
58
- error = assert_raises Resizing::ConfigurationError do
59
- raise Resizing::ConfigurationError, 'test configuration error'
60
- end
61
-
62
- assert_equal 'test configuration error', error.message
63
- end
64
-
65
- def test_api_error_can_be_raised_with_message
66
- error = assert_raises Resizing::APIError do
67
- raise Resizing::APIError, 'test api error'
68
- end
69
-
70
- assert_equal 'test api error', error.message
71
- end
72
- end
73
- end
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module Resizing
6
- class HttpClientableTest < Minitest::Test
7
- class TestClient
8
- include HttpClientable
9
-
10
- def config
11
- @config ||= Configuration.new(
12
- image_host: 'https://image.example.com',
13
- project_id: 'test_project',
14
- secret_token: 'test_token'
15
- )
16
- end
17
- end
18
-
19
- def setup
20
- @client = TestClient.new
21
- end
22
-
23
- def teardown
24
- # NOP
25
- end
26
-
27
- def test_http_client_initialization
28
- http_client = @client.http_client
29
-
30
- assert_instance_of Faraday::Connection, http_client
31
- end
32
-
33
- def test_http_client_has_open_timeout
34
- http_client = @client.http_client
35
-
36
- assert_equal @client.config.open_timeout, http_client.options[:open_timeout]
37
- end
38
-
39
- def test_http_client_has_response_timeout
40
- http_client = @client.http_client
41
-
42
- assert_equal @client.config.response_timeout, http_client.options[:timeout]
43
- end
44
-
45
- def test_http_client_is_cached
46
- http_client1 = @client.http_client
47
- http_client2 = @client.http_client
48
-
49
- assert_equal http_client1.object_id, http_client2.object_id
50
- end
51
-
52
- def test_handle_faraday_error_yields_block
53
- result = @client.handle_faraday_error { 'test_result' }
54
-
55
- assert_equal 'test_result', result
56
- end
57
-
58
- def test_handle_faraday_error_catches_timeout_error
59
- assert_raises Resizing::APIError do
60
- @client.handle_faraday_error do
61
- raise Faraday::TimeoutError, 'timeout'
62
- end
63
- end
64
- end
65
-
66
- def test_handle_timeout_error_raises_api_error
67
- error = Faraday::TimeoutError.new('test timeout')
68
-
69
- assert_raises Resizing::APIError do
70
- @client.handle_timeout_error(error)
71
- end
72
- end
73
-
74
- def test_handle_timeout_error_message_includes_error_info
75
- error = Faraday::TimeoutError.new('test timeout')
76
-
77
- begin
78
- @client.handle_timeout_error(error)
79
- rescue Resizing::APIError => e
80
- assert_includes e.message, 'TimeoutError'
81
- end
82
- end
83
- end
84
- end