imgix 3.4.0 → 4.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.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Imgix
4
- VERSION = '3.4.0'
4
+ VERSION = "4.0.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imgix
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Sutton
@@ -13,36 +13,8 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2020-08-12 00:00:00.000000000 Z
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: addressable
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: '0'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: '0'
32
- - !ruby/object:Gem::Dependency
33
- name: webmock
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ">="
37
- - !ruby/object:Gem::Version
38
- version: '0'
39
- type: :development
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: '0'
16
+ date: 2020-08-27 00:00:00.000000000 Z
17
+ dependencies: []
46
18
  description: Easily create and sign imgix URLs.
47
19
  email:
48
20
  - kelly@imgix.com
@@ -55,12 +27,8 @@ executables: []
55
27
  extensions: []
56
28
  extra_rdoc_files: []
57
29
  files:
58
- - ".github/CODEOWNERS"
59
- - ".github/ISSUE_TEMPLATE/bug_report.md"
60
- - ".github/ISSUE_TEMPLATE/feature_request.md"
61
- - ".github/ISSUE_TEMPLATE/question.md"
62
- - ".github/pull_request_template.md"
63
30
  - ".gitignore"
31
+ - ".rubocop.yml"
64
32
  - ".travis.yml"
65
33
  - CHANGELOG.md
66
34
  - Contributing.markdown
@@ -71,24 +39,16 @@ files:
71
39
  - imgix.gemspec
72
40
  - lib/imgix.rb
73
41
  - lib/imgix/client.rb
74
- - lib/imgix/param_helpers.rb
75
42
  - lib/imgix/path.rb
76
43
  - lib/imgix/version.rb
77
- - test/test_helper.rb
78
- - test/units/domains_test.rb
79
- - test/units/param_helpers_test.rb
80
- - test/units/path_test.rb
81
- - test/units/purge_test.rb
82
- - test/units/srcset_test.rb
83
- - test/units/url_test.rb
84
44
  homepage: https://github.com/imgix/imgix-rb
85
45
  licenses:
86
46
  - MIT
87
47
  metadata:
88
48
  bug_tracker_uri: https://github.com/imgix/imgix-rb/issues
89
49
  changelog_uri: https://github.com/imgix/imgix-rb/blob/main/CHANGELOG.md
90
- documentation_uri: https://www.rubydoc.info/gems/imgix/3.4.0
91
- source_code_uri: https://github.com/imgix/imgix-rb/tree/3.4.0
50
+ documentation_uri: https://www.rubydoc.info/gems/imgix/4.0.0
51
+ source_code_uri: https://github.com/imgix/imgix-rb/tree/4.0.0
92
52
  post_install_message:
93
53
  rdoc_options: []
94
54
  require_paths:
@@ -108,11 +68,4 @@ rubygems_version: 3.1.2
108
68
  signing_key:
109
69
  specification_version: 4
110
70
  summary: Official Ruby Gem for easily creating and signing imgix URLs.
111
- test_files:
112
- - test/test_helper.rb
113
- - test/units/domains_test.rb
114
- - test/units/param_helpers_test.rb
115
- - test/units/path_test.rb
116
- - test/units/purge_test.rb
117
- - test/units/srcset_test.rb
118
- - test/units/url_test.rb
71
+ test_files: []
@@ -1,2 +0,0 @@
1
- # Default owners for repo
2
- * @imgix/imgix-sdk-team
@@ -1,28 +0,0 @@
1
- ---
2
- name: Bug report
3
- about: Create a report to help us improve
4
- title: ''
5
- labels: bug
6
- assignees:
7
-
8
- ---
9
-
10
- Please provide the following information and someone from @imgix/imgix-sdk-team will respond to your issue shortly.
11
-
12
- **Describe the bug**
13
- A clear and concise description of what the bug is.
14
-
15
- **To Reproduce**
16
- Steps to reproduce the behavior:
17
-
18
- **Expected behavior**
19
- A clear and concise description of what you expected to happen.
20
-
21
- **Screenshots**
22
- If applicable, add screenshots to help explain your problem.
23
-
24
- **Information:**
25
- - imgix-rb version: [e.g. 2.0.0]
26
-
27
- **Additional context**
28
- Add any other context about the problem here.
@@ -1,27 +0,0 @@
1
- ---
2
- name: Feature request
3
- about: Suggest an idea for this project
4
- title: ''
5
- labels: ''
6
- assignees:
7
-
8
- ---
9
-
10
- Please provide the following information and someone from @imgix/imgix-sdk-team will respond to your issue shortly.
11
-
12
- **Before you submit:**
13
-
14
- - [ ] Please search through the [existing issues](https://github.com/imgix/imgix-rb/issues?utf8=%E2%9C%93&q=is%3Aissue) to see if your feature has already been discussed.
15
- - [ ] Please take a moment to find out whether your idea fits with the scope and aims of this project.
16
-
17
- **Is your feature request related to a problem? Please describe.**
18
- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
19
-
20
- **Describe the solution you'd like**
21
- A clear and concise description of what you want to happen.
22
-
23
- **Describe alternatives you've considered**
24
- A clear and concise description of any alternative solutions or features you've considered.
25
-
26
- **Additional context**
27
- Add any other context or screenshots about the feature request here.
@@ -1,17 +0,0 @@
1
- ---
2
- name: Question
3
- about: Ask a question about the project
4
- title: ''
5
- labels: ''
6
- assignees:
7
-
8
- ---
9
-
10
- Please provide the following information and someone from @imgix/imgix-sdk-team will respond to your issue shortly.
11
-
12
- **Before you submit:**
13
-
14
- - [ ] Please search through the [existing issues](https://github.com/imgix/imgix-rb/issues?utf8=%E2%9C%93&q=is%3Aissue) to see if your question has already been discussed.
15
-
16
- **Question**
17
- A clear and concise description of your question.
@@ -1,73 +0,0 @@
1
- <!--
2
- Hello, and thanks for contributing to imgix-rb! 🎉🙌
3
- Please take a second to fill out PRs with the following template!
4
- -->
5
-
6
- # Description
7
-
8
- <!-- What is accomplished by this PR? If there is something potentially controversial in your PR, please take a moment to tell us about your choices. -->
9
-
10
- <!--
11
- Please use the checklist that is most closely related to your PR, and delete the other checklists. -->
12
-
13
- ## Checklist: Fixing typos/Doc change
14
-
15
- - [ ] Each commit follows the [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) format: e.g. `chore(readme): fixed typo`. See the end of this file for more information.
16
-
17
- ## Checklist: Bug Fix
18
-
19
- - [ ] Each commit follows the [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) format: e.g. `chore(readme): fixed typo`. See the end of this file for more information.
20
- - [ ] All existing unit tests are still passing (if applicable)
21
- - [ ] Add new passing unit tests to cover the code introduced by your PR
22
- - [ ] Update the readme
23
- - [ ] Update or add any necessary API documentation
24
- - [ ] Add some [steps](#steps-to-test) so we can test your bug fix
25
-
26
- ## Checklist: New Feature
27
-
28
- - [ ] Each commit follows the [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) format: e.g. `chore(readme): fixed typo`. See the end of this file for more information.
29
- - [ ] Any breaking changes are specified on the commit on which they are introduced with `BREAKING CHANGE` in the body of the commit.
30
- - [ ] If this is a big feature with breaking changes, consider [opening an issue](https://github.com/imgix/imgix-rb/issues/new?labels=&template=feature_request.md&title=) to discuss first. This is completely up to you, but please keep in mind that your PR might not be accepted.
31
- - [ ] Run unit tests to ensure all existing tests are still passing
32
- - [ ] Add new passing unit tests to cover the code introduced by your PR
33
- - [ ] Update the readme
34
- - [ ] Add some [steps](#steps-to-test) so we can test your cool new feature!
35
-
36
- ## Steps to Test
37
-
38
- <!-- Delete this selction if you are just submitting a doc change/small fix -->
39
-
40
- <!-- A code example or a set of steps is preferred -->
41
-
42
- Related issue: [e.g. #42]
43
-
44
- Code:
45
-
46
- ```rb
47
- // A standalone Ruby example of what the PR solves
48
- ```
49
-
50
- <!-- A link to a codepen/codesandbox is also an option. -->
51
-
52
- <!--
53
-
54
- ## Conventional Commit Spec
55
-
56
- PR titles should be in the format `<type>(<scope>): <description>`. For example: `chore(readme): fix typo`
57
-
58
- `type` can be any of the follow:
59
- - `feat`: a feature, or breaking change
60
- - `fix`: a bug-fix
61
- - `test`: Adding missing tests or correcting existing tests
62
- - `docs`: documentation only changes (readme, changelog, contributing guide)
63
- - `refactor`: a code change that neither fixes a bug nor adds a feature
64
- - `chore`: reoccurring tasks for project maintainability (example scopes: release, deps)
65
- - `config`: changes to tooling configurations used in the project
66
- - `build`: changes that affect the build system or external dependencies (example scopes: npm, bundler, gradle)
67
- - `ci`: changes to CI configuration files and scripts (example scopes: travis)
68
- - `perf`: a code change that improves performance
69
- - `style`: changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
70
-
71
- `scope` is optional, and can be anything.
72
- `description` should be a short description of the change, written in the imperative-mood.
73
- -->
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Imgix
4
- module ParamHelpers
5
- def rect(position)
6
- warn "Warning: `ParamHelpers.rect` has been deprecated and will be removed in the next major version.\n"
7
- @options[:rect] = position and return self if position.is_a?(String)
8
-
9
- @options[:rect] = [
10
- position[:x] || position[:left],
11
- position[:y] || position[:top],
12
- position[:width] || (position[:right] - position[:left]),
13
- position[:height] || (position[:bottom] - position[:top])
14
- ].join(',')
15
-
16
- return self
17
- end
18
- end
19
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- Bundler.require :test
6
-
7
- require 'minitest/autorun'
8
- require 'imgix'
9
- require 'webmock/minitest'
10
-
11
- class Imgix::Test < MiniTest::Test
12
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class DomainsTest < Imgix::Test
6
- def test_invalid_domain_append_slash
7
- assert_raises(ArgumentError) {Imgix::Client.new(host: "assets.imgix.net/")}
8
- end
9
-
10
- def test_invalid_domain_prepend_scheme
11
- assert_raises(ArgumentError) {Imgix::Client.new(host: "https://assets.imgix.net")}
12
- end
13
-
14
- def test_invalid_domain_append_dash
15
- assert_raises(ArgumentError) {Imgix::Client.new(host: "assets.imgix.net-")}
16
- end
17
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class ParamHelpers < Imgix::Test
6
- def test_param_helpers_emits_dep_warning
7
- host_warn = "Warning: The identifier `host' has been deprecated and " \
8
- "will\nappear as `domain' in the next major version, e.g. " \
9
- "`@host'\nbecomes `@domain', `options[:host]' becomes " \
10
- "`options[:domain]'.\n"
11
-
12
- assert_output(nil, host_warn) {
13
- client = Imgix::Client.new(host: 'test.imgix.net')
14
-
15
- rect_warn = "Warning: `ParamHelpers.rect` has been deprecated and " \
16
- "will be removed in the next major version.\n"
17
-
18
- assert_output(nil, rect_warn){
19
- client.path('/images/demo.png').rect(x: 0, y: 50, width: 200, height: 300)
20
- }
21
- }
22
- end
23
- end
@@ -1,182 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class PathTest < Imgix::Test
6
- def test_prefix_with_arg_warns
7
- prefix_warn = "Warning: `Client::prefix' will take zero arguments " \
8
- "in the next major version.\n"
9
-
10
- assert_output(nil, prefix_warn) {
11
- Imgix::Client.new(
12
- domain: 'test.imgix.net',
13
- include_library_param: false
14
- ).prefix("")
15
- }
16
-
17
- # `new_prefix' is a placeholder until the bump, when it will become
18
- # `prefix`.
19
- assert_output(nil, nil) {
20
- Imgix::Client.new(
21
- domain: 'test.imgix.net',
22
- include_library_param: false
23
- ).new_prefix
24
- }
25
- end
26
-
27
- def test_creating_a_path
28
- path = client.path('/images/demo.png')
29
- assert_equal 'https://demo.imgix.net/images/demo.png?s=2c7c157eaf23b06a0deb2f60b81938c4', path.to_url
30
-
31
- path = client.path('images/demo.png')
32
- assert_equal 'https://demo.imgix.net/images/demo.png?s=2c7c157eaf23b06a0deb2f60b81938c4', path.to_url
33
- end
34
-
35
- def test_signing_path_with_param
36
- url = 'https://demo.imgix.net/images/demo.png?w=200&s=da421114ca238d1f4a927b889f67c34e'
37
- path = client.path('/images/demo.png')
38
-
39
- assert_output(nil, "Warning: `Path.width=' has been deprecated and " \
40
- "will be removed in the next major version (along " \
41
- "with all parameter `ALIASES`).\n") {
42
- path.width = 200
43
- }
44
-
45
- assert_equal url, path.to_url
46
-
47
- path = client.path('/images/demo.png')
48
- assert_equal url, path.to_url(w: 200)
49
-
50
- path = client.path('/images/demo.png')
51
-
52
- assert_output(nil, "Warning: `Path.width' has been deprecated and " \
53
- "will be removed in the next major version (along " \
54
- "with all parameter `ALIASES`).\n") {
55
- assert_equal url, path.width(200).to_url
56
- }
57
- end
58
-
59
- def test_resetting_defaults
60
- url = 'https://demo.imgix.net/images/demo.png?w=200&s=da421114ca238d1f4a927b889f67c34e'
61
- path = client.path('/images/demo.png')
62
-
63
- assert_output(nil, "Warning: `Path.height=' has been deprecated and " \
64
- "will be removed in the next major version (along " \
65
- "with all parameter `ALIASES`).\n") {
66
- path.height = 300
67
- }
68
-
69
- assert_equal url, path.defaults.to_url(w: 200)
70
- end
71
-
72
- def test_path_with_multiple_params
73
- url = 'https://demo.imgix.net/images/demo.png?h=200&w=200&s=d570a1ecd765470f7b34a69b56718a7a'
74
- path = client.path('/images/demo.png')
75
-
76
- assert_equal url, path.to_url(h: 200, w: 200)
77
-
78
- path = client.path('/images/demo.png')
79
-
80
- assert_output(nil, "Warning: `Path.height' has been deprecated and " \
81
- "will be removed in the next major version (along " \
82
- "with all parameter `ALIASES`).\n") {
83
- path.height(200)
84
- }
85
-
86
-
87
- assert_output(nil, "Warning: `Path.width' has been deprecated and " \
88
- "will be removed in the next major version (along " \
89
- "with all parameter `ALIASES`).\n") {
90
- path.width(200)
91
- }
92
-
93
- assert_equal url, path.to_url
94
- end
95
-
96
- def test_path_with_multi_value_param_safely_encoded
97
- url = 'https://demo.imgix.net/images/demo.png?markalign=middle%2Ccenter&s=f0d0e28a739f022638f4ba6dddf9b694'
98
- path = client.path('/images/demo.png')
99
-
100
- assert_equal url, path.markalign('middle', 'center').to_url
101
- end
102
-
103
- def test_param_keys_are_escaped
104
- ix_url = unsigned_client.path('demo.png').to_url({
105
- :'hello world' => 'interesting'
106
- })
107
-
108
- assert_equal "https://demo.imgix.net/demo.png?hello%20world=interesting", ix_url
109
- end
110
-
111
- def test_param_values_are_escaped
112
- ix_url = unsigned_client.path('demo.png').to_url({
113
- hello_world: '/foo"> <script>alert("hacked")</script><'
114
- })
115
-
116
- assert_equal "https://demo.imgix.net/demo.png?hello_world=%2Ffoo%22%3E%20%3Cscript%3Ealert%28%22hacked%22%29%3C%2Fscript%3E%3C", ix_url
117
- end
118
-
119
- def test_base64_param_variants_are_base64_encoded
120
- ix_url = unsigned_client.path('~text').to_url({
121
- txt64: 'I cannøt belîév∑ it wors! 😱'
122
- })
123
-
124
- assert_equal "https://demo.imgix.net/~text?txt64=SSBjYW5uw7h0IGJlbMOuw6l24oiRIGl0IHdvcu-jv3MhIPCfmLE", ix_url
125
- end
126
-
127
- def test_host_is_required
128
- assert_raises(ArgumentError) {Imgix::Client.new}
129
- end
130
-
131
- def test_token_is_optional
132
- client = Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false)
133
- url = 'https://demo.imgix.net/images/demo.png'
134
- path = client.path('/images/demo.png')
135
-
136
- assert_equal url, path.to_url
137
- end
138
-
139
- def test_https_is_optional
140
- client = Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false, use_https: false)
141
- url = 'http://demo.imgix.net/images/demo.png'
142
- path = client.path('/images/demo.png')
143
-
144
- assert_equal url, path.to_url
145
- end
146
-
147
- def test_full_url
148
- path = 'https://google.com/cats.gif'
149
-
150
- assert_equal "https://demo.imgix.net/#{CGI.escape(path)}?s=e686099fbba86fc2b8141d3c1ff60605", client.path(path).to_url
151
- end
152
-
153
- def test_full_url_with_a_space
154
- path = 'https://my-demo-site.com/files/133467012/avatar icon.png'
155
- assert_equal "https://demo.imgix.net/#{CGI.escape(path)}?s=35ca40e2e7b6bd208be2c4f7073f658e", client.path(path).to_url
156
- end
157
-
158
- def test_include_library_param
159
- client = Imgix::Client.new(host: 'demo.imgix.net') # enabled by default
160
- url = client.path('/images/demo.png').to_url
161
-
162
- assert_equal "ixlib=rb-#{Imgix::VERSION}", URI(url).query
163
- end
164
-
165
- def test_configure_library_param
166
- library = "sinatra"
167
- version = Imgix::VERSION
168
- client = Imgix::Client.new(host: 'demo.imgix.net', library_param: library, library_version: version) # enabled by default
169
- url = client.path('/images/demo.png').to_url
170
-
171
- assert_equal "ixlib=#{library}-#{version}", URI(url).query
172
- end
173
-
174
- private
175
- def client
176
- @client ||= Imgix::Client.new(host: 'demo.imgix.net', secure_url_token: '10adc394', include_library_param: false)
177
- end
178
-
179
- def unsigned_client
180
- @unsigned_client ||= Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false)
181
- end
182
- end