tinify 1.5.0 → 1.6.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 +5 -5
- data/.github/workflows/ci-cd.yaml +113 -0
- data/.gitignore +2 -0
- data/CHANGES.md +18 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +15 -12
- data/LICENSE +1 -1
- data/README.md +3 -1
- data/lib/data/cacert.pem +842 -1638
- data/lib/tinify/result.rb +7 -0
- data/lib/tinify/source.rb +8 -0
- data/lib/tinify/version.rb +1 -1
- data/test/helper.rb +4 -0
- data/test/integration.rb +11 -0
- data/test/tinify_client_test.rb +1 -1
- data/test/tinify_result_test.rb +13 -0
- data/test/tinify_source_test.rb +63 -0
- data/tinify.gemspec +0 -5
- data/update-cacert.sh +6 -6
- metadata +5 -61
- data/.travis.yml +0 -38
data/lib/tinify/result.rb
CHANGED
data/lib/tinify/source.rb
CHANGED
@@ -29,6 +29,14 @@ module Tinify
|
|
29
29
|
self.class.new(@url, @commands.merge(resize: options))
|
30
30
|
end
|
31
31
|
|
32
|
+
def convert(options)
|
33
|
+
self.class.new(@url, @commands.merge(convert: options))
|
34
|
+
end
|
35
|
+
|
36
|
+
def transform(options)
|
37
|
+
self.class.new(@url, @commands.merge(transform: options))
|
38
|
+
end
|
39
|
+
|
32
40
|
def store(options)
|
33
41
|
response = Tinify.client.request(:post, @url, @commands.merge(store: options))
|
34
42
|
ResultMeta.new(response.headers).freeze
|
data/lib/tinify/version.rb
CHANGED
data/test/helper.rb
CHANGED
data/test/integration.rb
CHANGED
@@ -76,4 +76,15 @@ describe "client integration" do
|
|
76
76
|
assert_includes contents, "Copyright Voormedia".force_encoding("binary")
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
it "should convert" do
|
81
|
+
Tempfile.open("optimized.png", encoding: "binary") do |file|
|
82
|
+
optimized.convert(type: "image/webp").to_file(file.path)
|
83
|
+
r = file.read
|
84
|
+
|
85
|
+
assert_equal r[0..3], "RIFF".force_encoding("binary")
|
86
|
+
assert_equal r[8..11], "WEBP".force_encoding("binary")
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
79
90
|
end
|
data/test/tinify_client_test.rb
CHANGED
@@ -255,7 +255,7 @@ describe Tinify::Client do
|
|
255
255
|
end
|
256
256
|
|
257
257
|
it "should raise error with message" do
|
258
|
-
assert_raise_with_message
|
258
|
+
assert_raise_with_message /\(HTTP 543\/ParseError\)/ do
|
259
259
|
subject.request(:get, "/")
|
260
260
|
end
|
261
261
|
end
|
data/test/tinify_result_test.rb
CHANGED
@@ -47,6 +47,12 @@ describe Tinify::Result do
|
|
47
47
|
assert_equal "image data", subject.to_buffer
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
describe "extension" do
|
52
|
+
it "should return extension" do
|
53
|
+
assert_equal "png", subject.extension
|
54
|
+
end
|
55
|
+
end
|
50
56
|
end
|
51
57
|
|
52
58
|
describe "without meta and data" do
|
@@ -89,5 +95,12 @@ describe Tinify::Result do
|
|
89
95
|
assert_nil subject.to_buffer
|
90
96
|
end
|
91
97
|
end
|
98
|
+
|
99
|
+
describe "extension" do
|
100
|
+
it "should return nil" do
|
101
|
+
assert_nil subject.extension
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
92
105
|
end
|
93
106
|
end
|
data/test/tinify_source_test.rb
CHANGED
@@ -213,6 +213,69 @@ describe Tinify::Source do
|
|
213
213
|
end
|
214
214
|
end
|
215
215
|
|
216
|
+
describe "convert" do
|
217
|
+
before do
|
218
|
+
stub_request(:post, "https://api:valid@api.tinify.com/shrink")
|
219
|
+
.to_return(
|
220
|
+
status: 201,
|
221
|
+
headers: { Location: "https://api.tinify.com/some/location" },
|
222
|
+
body: '{}')
|
223
|
+
|
224
|
+
stub_request(:get, "https://api:valid@api.tinify.com/some/location")
|
225
|
+
.with(
|
226
|
+
body: '{"convert":{"type":["image/webp"]}}')
|
227
|
+
.to_return(
|
228
|
+
status: 200,
|
229
|
+
body: "converted file")
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should return source" do
|
233
|
+
assert_kind_of Tinify::Source, Tinify::Source.from_buffer("png file").convert(type: ["image/webp"])
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should return source with data" do
|
237
|
+
assert_equal "converted file", Tinify::Source.from_buffer("png file").convert(type: ["image/webp"]).to_buffer
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
describe "transform" do
|
242
|
+
before do
|
243
|
+
stub_request(:post, "https://api:valid@api.tinify.com/shrink")
|
244
|
+
.to_return(
|
245
|
+
status: 201,
|
246
|
+
headers: { Location: "https://api.tinify.com/some/location" },
|
247
|
+
body: '{}')
|
248
|
+
|
249
|
+
stub_request(:get, "https://api:valid@api.tinify.com/some/location")
|
250
|
+
.with(
|
251
|
+
body: '{"transform":{"color":"black"}}')
|
252
|
+
.to_return(
|
253
|
+
status: 200,
|
254
|
+
body: "transformd file")
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should return source" do
|
258
|
+
assert_kind_of Tinify::Source, Tinify::Source.from_buffer("png file").transform(color: "black'")
|
259
|
+
end
|
260
|
+
|
261
|
+
it "should return source with data" do
|
262
|
+
assert_equal "transformd file", Tinify::Source.from_buffer("png file").transform(color: "black").to_buffer
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should include other options if set" do
|
266
|
+
|
267
|
+
stub_request(:get, "https://api:valid@api.tinify.com/some/location").
|
268
|
+
with(:body => '{"convert":{"type":["image/webp"]},"transform":{"color":"black"}}',
|
269
|
+
).
|
270
|
+
to_return(:status => 200, :body => "trans-formed-and-coded", :headers => {})
|
271
|
+
|
272
|
+
result = Tinify::Source.from_buffer("png file").convert(type: ["image/webp"]).transform(color: "black")
|
273
|
+
assert_equal "trans-formed-and-coded", result.to_buffer
|
274
|
+
end
|
275
|
+
|
276
|
+
|
277
|
+
end
|
278
|
+
|
216
279
|
describe "store" do
|
217
280
|
before do
|
218
281
|
stub_request(:post, "https://api:valid@api.tinify.com/shrink")
|
data/tinify.gemspec
CHANGED
@@ -19,9 +19,4 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency("httpclient", "~> 2.6")
|
22
|
-
|
23
|
-
spec.add_development_dependency("bundler", "~> 1.7")
|
24
|
-
spec.add_development_dependency("rake", "~> 10.0")
|
25
|
-
spec.add_development_dependency("minitest", "~> 5.5")
|
26
|
-
spec.add_development_dependency("webmock", "~> 1.20")
|
27
22
|
end
|
data/update-cacert.sh
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
#!/bin/
|
1
|
+
#!/usr/bin/env bash
|
2
2
|
dir=lib/data
|
3
3
|
|
4
4
|
cert=0
|
5
|
-
curl https://curl.
|
5
|
+
curl --silent --fail https://curl.se/ca/cacert.pem | while read -r line; do
|
6
6
|
if [ "-----BEGIN CERTIFICATE-----" == "$line" ]; then
|
7
7
|
cert=1
|
8
|
-
echo $line
|
8
|
+
echo "$line"
|
9
9
|
elif [ "-----END CERTIFICATE-----" == "$line" ]; then
|
10
10
|
cert=0
|
11
|
-
echo $line
|
11
|
+
echo "$line"
|
12
12
|
else
|
13
13
|
if [ $cert == 1 ]; then
|
14
|
-
echo $line
|
14
|
+
echo "$line"
|
15
15
|
fi
|
16
16
|
fi
|
17
|
-
done > $dir/cacert.pem
|
17
|
+
done > "$dir/cacert.pem"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rolf Timmermans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
@@ -24,62 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.6'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.7'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.7'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '10.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: minitest
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '5.5'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '5.5'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: webmock
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.20'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.20'
|
83
27
|
description: Ruby client for the Tinify API. Tinify compresses your images intelligently.
|
84
28
|
Read more at https://tinify.com.
|
85
29
|
email:
|
@@ -88,7 +32,8 @@ executables: []
|
|
88
32
|
extensions: []
|
89
33
|
extra_rdoc_files: []
|
90
34
|
files:
|
91
|
-
- ".
|
35
|
+
- ".github/workflows/ci-cd.yaml"
|
36
|
+
- ".gitignore"
|
92
37
|
- CHANGES.md
|
93
38
|
- Gemfile
|
94
39
|
- Gemfile.lock
|
@@ -133,8 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
78
|
- !ruby/object:Gem::Version
|
134
79
|
version: '0'
|
135
80
|
requirements: []
|
136
|
-
|
137
|
-
rubygems_version: 2.4.5
|
81
|
+
rubygems_version: 3.1.6
|
138
82
|
signing_key:
|
139
83
|
specification_version: 4
|
140
84
|
summary: Ruby client for the Tinify API.
|
data/.travis.yml
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 1.9.2
|
4
|
-
- 1.9.3
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
- 2.3.0
|
9
|
-
- ruby-head
|
10
|
-
- jruby-19mode
|
11
|
-
- jruby-20mode
|
12
|
-
- rbx-2
|
13
|
-
env:
|
14
|
-
global:
|
15
|
-
- secure: u2JnTDMbqgf0kP5vDywFP+lL0ON135Q4a4jXTS1J4K8Kp7qFe/yzyrtYSmDJux31U3Ob/U/ptwYLlFUYuwjwMgTb4ow35jms8d9RvLb6vIBH7Yw9Sf6eq3iJxHGNOjM2pTL9N5DHx4TTO2ov+vQ1PT/QY5P70LVrSKurgKFDjgIZKwnYbFSZtusHX0qTPPQ3FL+NDdcuDmxLxiGt294o+9pFrUAQUKVV4NAk+HUnLjpqKWFqD9pMEw/DYrX4g9RAmN5YWt0sE+CCMFEaKh6Ghrfcfxov9yDEcKDz2ELXNiot9526wwoNONA/zT9hNQXfxhIXfV/67JsJ9cmbZIgP9FLWd/ziRs/yjoTJRaSloifXtAXAft2PMiNx7dnB2C9FFnDzJuTTkJdQfdSEkcXkn0a1Hy5wUI6Ur9Vdjn/Jc5yAHF6Uc78ekgkXBIVxc/J9J9EjophlaCsZHQbgM2H+mADbRIAA/qV1WD9XTISxANP6N19Pt6xFW+wGDnfBBDqbzCO6vK9M+9fU2LW4N8177rtCEG7XkUVSllbJvq841MPqOi2k++B9LD2xAu6Db3ubV5KFL/wg1QBoyP5QOd1uAZ+goQFdvxOZ/7mN/45ytKYYammQlngZFUi638dAE6f4j+NUtrczk4QQJmDuFxXoP+KBtgiD1nrtmenaxOEp/gk=
|
16
|
-
matrix:
|
17
|
-
allow_failures:
|
18
|
-
- rvm: jruby-20mode
|
19
|
-
- rvm: ruby-head
|
20
|
-
- rvm: rbx-2
|
21
|
-
include:
|
22
|
-
- rvm: 2.2
|
23
|
-
env: INTEGRATION_TESTS=true
|
24
|
-
script: "if [ \"$TRAVIS_PULL_REQUEST\" == \"false\" ]; then rake integration; fi"
|
25
|
-
notifications:
|
26
|
-
email: false
|
27
|
-
slack:
|
28
|
-
secure: udqUs5rLo5XXIM+PpqBDCTOEobzqnQs2Vq+eHOBaJggVSjfYrN6OYQAmZVBLIpysCJPcuZhZ64u93p2Zl+Yu9vJHXPnhFIBEmQlFybCjRIQtz1MMaeqZTMCO49avY+SCjBvXZV902PKJ8vVeeR2O3T5oj894JTejtAnXm5yEInNft3ODMsF+v3R5WFjD8cS+RWegZRotkbhQmQNrqCKxD7rZ3ufTyJuhpVnJPsUZVyaMJbWUWJRsessbl9nBxk3fFR74KXoURgEOv/OmbQD5AkVv1FkxGh0Y7wpn0aU9UOSmJZzzsXp/MaGNfZW7UwGx4iMtTa1YK+h+/fD3PNePfCPLZfvIvxnheIUn3Zrky9TDfK3KP9KHNuAtGdW3c5oxSCimRNTmx2MmsnbGO2sElR/u+Jxr+h0NO5xaBQBmHQeGKjv7VYv3Hexeac0I9lf6lQzmpk6XlstsPfht/Qwia/45RyEu2E8/s4OTFiKYgCBtpttkQ1VTvRowUPgHcuddldUKlI0j6CZlM2gpt9oLAQvzSmdlGX3j4Hpa6nCHILzW8vLoNHvMHTgjz6GU6RJwSj9JjIDkg1XCmq60EmQOKaacjEGXAG2plp0Fulm5THgU7WKnxC5PA+lrSgspmUFb8A0nmKG3tyuSOytVGBRAyu3FLEQih0xrPcZJ2rZ5T0s=
|
29
|
-
deploy:
|
30
|
-
provider: rubygems
|
31
|
-
api_key:
|
32
|
-
secure: E+dMU6AJuijnGrStl1+hrPizsiPzkWOAjpEG+zAhnuC6pBxTt0Ximc+UcrQiDmQdYQpxhulHreSO2otU9GkvDbpfrP+WE0c9j3AcAAHex6oHIctONWHwcbFnyyIMCNZpcFfMgVH8Nay3vnqVK+bhvNGLP/fVFeQE2co++JQp6BHpIMN6yxlIkGiJeP38Wcv4TVZmJMDcSxgLm+XlZ8xBIMkez9GEADnKXm2ZFfcx8p9K4bXK3hbZ34DF7bYYCN0eDqV4Y5ZGBF9FugUTz19fALyTlQxCks6NM2VT6gM/tg2ibGnzCQ4Wa3XR0pPH6H3xPJBtXlprUvXu27LYrb/PZ0rPN+cXI3nqGKsy6oxfCpVjr26qa5OoRG4XaX8w5ojUDo+D90HyT5Wxpe0BCAVQ+h/rgqOo9X0iByC2S9ORgCmo2lPPCUG442wmiX1V3um29rSNqX9CEb8WC0zZDgGwDp9YjlyztSy+hB96Ljy9rmQcSkQdcQETYSwareBqQmWFeHZbzy2iMR8xEzFpdCVUEnsY9isBVBeoJYYsAlrDRTrlt/A78K32JxP+9E5gQQegv6WQ/0nVJ9fmP6tnmFOLb1CUksmuAIJHA4FdVc0yZDnixHqZy8dyOxJ6dLwjAUx75TThI1ts36wATb8LBXIGgXXJb0y3RNP3KVY/DXPJE64=
|
33
|
-
gem: tinify
|
34
|
-
on:
|
35
|
-
tags: true
|
36
|
-
repo: tinify/tinify-ruby
|
37
|
-
ruby: 2.2
|
38
|
-
condition: "$INTEGRATION_TESTS != true"
|