kontent-delivery-sdk-ruby 2.0.22 → 2.0.24

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +21 -21
  3. data/README.md +603 -602
  4. data/bin/console +14 -14
  5. data/bin/setup +8 -8
  6. data/lib/delivery/builders/image_transformation_builder.rb +272 -272
  7. data/lib/delivery/builders/url_builder.rb +123 -123
  8. data/lib/delivery/client/delivery_client.rb +184 -184
  9. data/lib/delivery/client/delivery_query.rb +302 -302
  10. data/lib/delivery/client/request_manager.rb +126 -127
  11. data/lib/delivery/models/content_item.rb +153 -153
  12. data/lib/delivery/models/content_type.rb +41 -41
  13. data/lib/delivery/models/language.rb +29 -29
  14. data/lib/delivery/models/pagination.rb +22 -22
  15. data/lib/delivery/models/taxonomy_group.rb +39 -39
  16. data/lib/delivery/query_parameters/filters.rb +201 -201
  17. data/lib/delivery/query_parameters/parameter_base.rb +56 -56
  18. data/lib/delivery/query_parameters/query_string.rb +78 -78
  19. data/lib/delivery/resolvers/content_link_resolver.rb +102 -102
  20. data/lib/delivery/resolvers/inline_content_item_resolver.rb +75 -75
  21. data/lib/delivery/resolvers/linked_item_resolver.rb +43 -37
  22. data/lib/delivery/responses/delivery_element_response.rb +34 -34
  23. data/lib/delivery/responses/delivery_item_listing_response.rb +54 -54
  24. data/lib/delivery/responses/delivery_item_response.rb +40 -40
  25. data/lib/delivery/responses/delivery_items_feed_response.rb +58 -58
  26. data/lib/delivery/responses/delivery_language_listing_response.rb +44 -44
  27. data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +47 -47
  28. data/lib/delivery/responses/delivery_taxonomy_response.rb +33 -33
  29. data/lib/delivery/responses/delivery_type_listing_response.rb +46 -46
  30. data/lib/delivery/responses/delivery_type_response.rb +32 -32
  31. data/lib/delivery/responses/response_base.rb +39 -39
  32. data/lib/delivery/tests/401.json +5 -5
  33. data/lib/delivery/tests/429.json +4 -4
  34. data/lib/delivery/tests/fake_responder.rb +99 -105
  35. data/lib/delivery/tests/filtering/items_with_count.json +5384 -5384
  36. data/lib/delivery/tests/filtering/pagination.json +761 -761
  37. data/lib/delivery/tests/generic/items.json +5383 -5383
  38. data/lib/delivery/tests/generic/items/about_us.json +276 -276
  39. data/lib/delivery/tests/generic/items/aeropress_filters.json +155 -155
  40. data/lib/delivery/tests/generic/items/coffee_processing_techniques.json +565 -565
  41. data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +598 -598
  42. data/lib/delivery/tests/generic/languages.json +23 -23
  43. data/lib/delivery/tests/generic/taxonomies.json +203 -203
  44. data/lib/delivery/tests/generic/taxonomies/manufacturer.json +29 -29
  45. data/lib/delivery/tests/generic/types.json +835 -835
  46. data/lib/delivery/tests/generic/types/brewer.json +88 -88
  47. data/lib/delivery/tests/generic/types/brewer/elements/product_status.json +5 -5
  48. data/lib/delivery/tests/items_feed/articles_feed_1.json +39 -39
  49. data/lib/delivery/tests/items_feed/articles_feed_2.json +78 -78
  50. data/lib/delivery/tests/items_feed/articles_feed_3.json +104 -104
  51. data/lib/kontent-delivery-sdk-ruby.rb +22 -22
  52. metadata +13 -32
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "delivery"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "delivery"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,272 +1,272 @@
1
- require 'delivery/query_parameters/query_string'
2
-
3
- module Kentico
4
- module Kontent
5
- module Delivery
6
- module Builders
7
- # Provides methods for manipulating the URL of an asset to adjust the image's
8
- # size, cropping behavior, background color, output format, and quality.
9
- #
10
- # See https://developer.kenticocloud.com/v1/reference#image-transformation and
11
- # https://github.com/Kentico/kontent-delivery-sdk-ruby#image-transformation.
12
- class ImageTransformationBuilder
13
- FIT_MODE_CLIP = 'clip'.freeze
14
- FIT_MODE_SCALE = 'scale'.freeze
15
- FIT_MODE_CROP = 'crop'.freeze
16
- FORMAT_GIF = 'gif'.freeze
17
- FORMAT_PNG = 'png'.freeze
18
- FORMAT_PNG8 = 'png8'.freeze
19
- FORMAT_JPG = 'jpg'.freeze
20
- FORMAT_PJPG = 'pjpg'.freeze
21
- FORMAT_WEBP = 'webp'.freeze
22
-
23
- class << self
24
- def transform(url)
25
- AssetURL.new url
26
- end
27
- end
28
- end
29
-
30
- class AssetURL
31
- INVALID_PARAMS = 'One or more of the parameters is invalid. '\
32
- 'See https://developer.kenticocloud.com/v1/reference#focal-point-crop'\
33
- 'for more information.'.freeze
34
- ONE_TO_100 = 'Quality parameter must be between 1 and 100.'.freeze
35
- BOOLEAN_PARAM = 'The parameter must be a boolean, 0, or 1.'.freeze
36
-
37
- # Constructor. Generally, you obtain an +AssetURL+ object by calling
38
- # Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder.transform
39
- # instead of using this constructor.
40
- def initialize(url)
41
- @url = url
42
- @query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
43
- end
44
-
45
- # Applies all transformation options to the asset URL.
46
- #
47
- # * *Returns*:
48
- # - +string+ The full URL to the asset with all query string parameters set
49
- def url
50
- @url + @query_string.to_s
51
- end
52
-
53
- # Sets the width of the image
54
- #
55
- # * *Args*:
56
- # - *width*
57
- # - +integer+ Width in pixels, between 1 and 8192.
58
- # - +float+ Width in percentage, between 0 and 1.
59
- #
60
- # * *Returns*:
61
- # - +self+
62
- def with_width(width)
63
- @query_string.set_param 'w', width
64
- self
65
- end
66
-
67
- # Sets the height of the image
68
- #
69
- # * *Args*:
70
- # - *height*
71
- # - +integer+ Height in pixels, between 1 and 8192.
72
- # - +float+ Height in percentage, between 0 and 1.
73
- #
74
- # * *Returns* :
75
- # - +self+
76
- def with_height(height)
77
- @query_string.set_param 'h', height
78
- self
79
- end
80
-
81
- # Sets the device pixel ratio. Either width or height
82
- # (or both) must be set.
83
- #
84
- # * *Args*:
85
- # - *dpr* (+float+) Pixel ratio between 0 and 5.
86
- #
87
- # * *Returns*:
88
- # - +self+
89
- def with_pixel_ratio(dpr)
90
- @query_string.set_param 'dpr', dpr
91
- self
92
- end
93
-
94
- # Defines how the image is constrained while resizing. Either width
95
- # or height (or both) must be set.
96
- #
97
- # * *Args*:
98
- # - *fit* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
99
- #
100
- # * *Returns*:
101
- # - +self+
102
- def with_fit_mode(fit)
103
- @query_string.set_param 'fit', fit
104
- self
105
- end
106
-
107
- # Selects a region of the image to perform transformations on.
108
- # Setting this will remove focal point cropping from the image,
109
- # as the two options are incompatible.
110
- #
111
- # * *Args*:
112
- # - *x*
113
- # - +integer+ The left border of the rect in pixels
114
- # - +float+ The left border of the rect as a percentage between 0 and 1
115
- # - *y*
116
- # - +integer+ The top border of the rect in pixels
117
- # - +float+ The top border of the rect as a percentage between 0 and 1
118
- # - *width*
119
- # - +integer+ The width of the rect in pixels
120
- # - +float+ The width of the rect as a percentage between 0 and 1
121
- # - *height*
122
- # - +integer+ The height of the rect in pixels
123
- # - +float+ The height of the rect as a percentage between 0 and 1
124
- #
125
- # * *Returns*:
126
- # - +self+
127
- def with_rect(x, y, width, height)
128
- @query_string.remove_param 'fp-x'
129
- @query_string.remove_param 'fp-y'
130
- @query_string.remove_param 'fp-z'
131
- @query_string.remove_param 'fit'
132
- @query_string.remove_param 'crop'
133
- @query_string.set_param 'rect', "#{x},#{y},#{width},#{height}"
134
- self
135
- end
136
-
137
- # Sets the point of interest when cropping the image.
138
- # Setting this will remove the source rectangle region,
139
- # as the two options are incompatible. It also automatically sets the
140
- # crop to "focalpoint" and fit to "crop"
141
- #
142
- # * *Args*:
143
- # - *x* (+float+) Percentage of the image's width between 0 and 1
144
- # - *y* (+float+) Percentage of the image's height between 0 and 1
145
- # - *z* (+integer+) Amount of zoom to apply. A value of 1 is the default zoom, and each step represents 100% additional zoom.
146
- #
147
- # * *Returns*:
148
- # - +self+
149
- def with_focal_point(x, y, z)
150
- raise ArgumentError, INVALID_PARAMS unless valid_dims?(x, y, z)
151
-
152
- @query_string.remove_param 'rect'
153
- @query_string.set_param 'fp-x', x
154
- @query_string.set_param 'fp-y', y
155
- @query_string.set_param 'fp-z', z
156
- @query_string.set_param 'fit', ImageTransformationBuilder::FIT_MODE_CROP
157
- @query_string.set_param 'crop', 'focalpoint'
158
- self
159
- end
160
-
161
- # Sets the background color of any transparent areas of the image.
162
- #
163
- # * *Args*:
164
- # - *color* (+string+) A valid 3, 4, 6, or 8 digit hexadecimal color, without the # symbol
165
- #
166
- # * *Returns*:
167
- # - +self+
168
- def with_background_color(color)
169
- @query_string.set_param 'bg', color
170
- self
171
- end
172
-
173
- # Sets the output format of the request for the image.
174
- #
175
- # * *Args*:
176
- # - *format* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
177
- #
178
- # * *Returns*:
179
- # - +self+
180
- def with_output_format(format)
181
- @query_string.set_param 'fm', format
182
- self
183
- end
184
-
185
- # Configure the amount of compression for lossy file formats. Lower quality
186
- # images will have a smaller file size. Only affects *jpg*, *pjpg*, and
187
- # *webp* files.
188
- #
189
- # When no quality is specified for an image transformation, the default
190
- # value of 85 is used.
191
- #
192
- # * *Args*:
193
- # - *quality* (+integer+) The quality of the image between 1 and 100
194
- #
195
- # * *Returns*:
196
- # - +self+
197
- #
198
- # * *Raises*:
199
- # - +ArgumentError+ if +quality+ is not between 1 and 100 inclusive
200
- def with_quality(quality)
201
- raise ArgumentError, ONE_TO_100 unless quality.to_i >= 1 && quality.to_i <= 100
202
-
203
- @query_string.set_param 'q', quality
204
- self
205
- end
206
-
207
- # Sets the lossless parameter. If +true+, automatically sets the format
208
- # to WebP.
209
- #
210
- # * *Args*:
211
- # - *lossless*
212
- # - +integer+ Either 1 or 0
213
- # - +bool+ Either +true+ or +false+
214
- # - +string+ Either 'true' or 'false'
215
- #
216
- # * *Returns*:
217
- # - +self+
218
- #
219
- # * *Raises*:
220
- # - +ArgumentError+ if +lossless+ cannot be parsed as a boolean
221
- def with_lossless(lossless)
222
- lossless = lossless.to_s.downcase
223
- raise ArgumentError, BOOLEAN_PARAM unless bool? lossless
224
-
225
- @query_string.set_param 'lossless', lossless
226
- @query_string.set_param 'fm', Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder::FORMAT_WEBP if %w[true 1].include? lossless
227
- self
228
- end
229
-
230
- # Enables or disables automatic format selection. If enabled, it will
231
- # override the format parameter and deliver WebP instead. If the browser
232
- # does not support WebP, the value of the format parameter will be used.
233
- #
234
- # * *Args*:
235
- # - *auto*
236
- # - +integer+ Either 1 or 0
237
- # - +bool+ Either +true+ or +false+
238
- # - +string+ Either 'true' or 'false'
239
- #
240
- # * *Returns*:
241
- # - +self+
242
- #
243
- # * *Raises*:
244
- # - +ArgumentError+ if +auto+ cannot be parsed as a boolean
245
- def with_auto_format_selection(auto)
246
- auto = auto.to_s.downcase
247
- raise ArgumentError, BOOLEAN_PARAM unless bool? auto
248
-
249
- if %w[true 1].include? auto
250
- @query_string.set_param 'auto', 'format'
251
- else
252
- @query_string.remove_param 'auto'
253
- end
254
- self
255
- end
256
-
257
- private
258
-
259
- def valid_dims?(x, y, z)
260
- (x.to_f >= 0.0 && x.to_f <= 1.0) &&
261
- (y.to_f >= 0.0 && y.to_f <= 1.0) &&
262
- (z.to_i >= 1)
263
- end
264
-
265
- def bool?(value)
266
- %w[true false 0 1].include? value
267
- end
268
- end
269
- end
270
- end
271
- end
272
- end
1
+ require 'delivery/query_parameters/query_string'
2
+
3
+ module Kentico
4
+ module Kontent
5
+ module Delivery
6
+ module Builders
7
+ # Provides methods for manipulating the URL of an asset to adjust the image's
8
+ # size, cropping behavior, background color, output format, and quality.
9
+ #
10
+ # See https://developer.kenticocloud.com/v1/reference#image-transformation and
11
+ # https://github.com/Kentico/kontent-delivery-sdk-ruby#image-transformation.
12
+ class ImageTransformationBuilder
13
+ FIT_MODE_CLIP = 'clip'.freeze
14
+ FIT_MODE_SCALE = 'scale'.freeze
15
+ FIT_MODE_CROP = 'crop'.freeze
16
+ FORMAT_GIF = 'gif'.freeze
17
+ FORMAT_PNG = 'png'.freeze
18
+ FORMAT_PNG8 = 'png8'.freeze
19
+ FORMAT_JPG = 'jpg'.freeze
20
+ FORMAT_PJPG = 'pjpg'.freeze
21
+ FORMAT_WEBP = 'webp'.freeze
22
+
23
+ class << self
24
+ def transform(url)
25
+ AssetURL.new url
26
+ end
27
+ end
28
+ end
29
+
30
+ class AssetURL
31
+ INVALID_PARAMS = 'One or more of the parameters is invalid. '\
32
+ 'See https://developer.kenticocloud.com/v1/reference#focal-point-crop'\
33
+ 'for more information.'.freeze
34
+ ONE_TO_100 = 'Quality parameter must be between 1 and 100.'.freeze
35
+ BOOLEAN_PARAM = 'The parameter must be a boolean, 0, or 1.'.freeze
36
+
37
+ # Constructor. Generally, you obtain an +AssetURL+ object by calling
38
+ # Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder.transform
39
+ # instead of using this constructor.
40
+ def initialize(url)
41
+ @url = url
42
+ @query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
43
+ end
44
+
45
+ # Applies all transformation options to the asset URL.
46
+ #
47
+ # * *Returns*:
48
+ # - +string+ The full URL to the asset with all query string parameters set
49
+ def url
50
+ @url + @query_string.to_s
51
+ end
52
+
53
+ # Sets the width of the image
54
+ #
55
+ # * *Args*:
56
+ # - *width*
57
+ # - +integer+ Width in pixels, between 1 and 8192.
58
+ # - +float+ Width in percentage, between 0 and 1.
59
+ #
60
+ # * *Returns*:
61
+ # - +self+
62
+ def with_width(width)
63
+ @query_string.set_param 'w', width
64
+ self
65
+ end
66
+
67
+ # Sets the height of the image
68
+ #
69
+ # * *Args*:
70
+ # - *height*
71
+ # - +integer+ Height in pixels, between 1 and 8192.
72
+ # - +float+ Height in percentage, between 0 and 1.
73
+ #
74
+ # * *Returns* :
75
+ # - +self+
76
+ def with_height(height)
77
+ @query_string.set_param 'h', height
78
+ self
79
+ end
80
+
81
+ # Sets the device pixel ratio. Either width or height
82
+ # (or both) must be set.
83
+ #
84
+ # * *Args*:
85
+ # - *dpr* (+float+) Pixel ratio between 0 and 5.
86
+ #
87
+ # * *Returns*:
88
+ # - +self+
89
+ def with_pixel_ratio(dpr)
90
+ @query_string.set_param 'dpr', dpr
91
+ self
92
+ end
93
+
94
+ # Defines how the image is constrained while resizing. Either width
95
+ # or height (or both) must be set.
96
+ #
97
+ # * *Args*:
98
+ # - *fit* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
99
+ #
100
+ # * *Returns*:
101
+ # - +self+
102
+ def with_fit_mode(fit)
103
+ @query_string.set_param 'fit', fit
104
+ self
105
+ end
106
+
107
+ # Selects a region of the image to perform transformations on.
108
+ # Setting this will remove focal point cropping from the image,
109
+ # as the two options are incompatible.
110
+ #
111
+ # * *Args*:
112
+ # - *x*
113
+ # - +integer+ The left border of the rect in pixels
114
+ # - +float+ The left border of the rect as a percentage between 0 and 1
115
+ # - *y*
116
+ # - +integer+ The top border of the rect in pixels
117
+ # - +float+ The top border of the rect as a percentage between 0 and 1
118
+ # - *width*
119
+ # - +integer+ The width of the rect in pixels
120
+ # - +float+ The width of the rect as a percentage between 0 and 1
121
+ # - *height*
122
+ # - +integer+ The height of the rect in pixels
123
+ # - +float+ The height of the rect as a percentage between 0 and 1
124
+ #
125
+ # * *Returns*:
126
+ # - +self+
127
+ def with_rect(x, y, width, height)
128
+ @query_string.remove_param 'fp-x'
129
+ @query_string.remove_param 'fp-y'
130
+ @query_string.remove_param 'fp-z'
131
+ @query_string.remove_param 'fit'
132
+ @query_string.remove_param 'crop'
133
+ @query_string.set_param 'rect', "#{x},#{y},#{width},#{height}"
134
+ self
135
+ end
136
+
137
+ # Sets the point of interest when cropping the image.
138
+ # Setting this will remove the source rectangle region,
139
+ # as the two options are incompatible. It also automatically sets the
140
+ # crop to "focalpoint" and fit to "crop"
141
+ #
142
+ # * *Args*:
143
+ # - *x* (+float+) Percentage of the image's width between 0 and 1
144
+ # - *y* (+float+) Percentage of the image's height between 0 and 1
145
+ # - *z* (+integer+) Amount of zoom to apply. A value of 1 is the default zoom, and each step represents 100% additional zoom.
146
+ #
147
+ # * *Returns*:
148
+ # - +self+
149
+ def with_focal_point(x, y, z)
150
+ raise ArgumentError, INVALID_PARAMS unless valid_dims?(x, y, z)
151
+
152
+ @query_string.remove_param 'rect'
153
+ @query_string.set_param 'fp-x', x
154
+ @query_string.set_param 'fp-y', y
155
+ @query_string.set_param 'fp-z', z
156
+ @query_string.set_param 'fit', ImageTransformationBuilder::FIT_MODE_CROP
157
+ @query_string.set_param 'crop', 'focalpoint'
158
+ self
159
+ end
160
+
161
+ # Sets the background color of any transparent areas of the image.
162
+ #
163
+ # * *Args*:
164
+ # - *color* (+string+) A valid 3, 4, 6, or 8 digit hexadecimal color, without the # symbol
165
+ #
166
+ # * *Returns*:
167
+ # - +self+
168
+ def with_background_color(color)
169
+ @query_string.set_param 'bg', color
170
+ self
171
+ end
172
+
173
+ # Sets the output format of the request for the image.
174
+ #
175
+ # * *Args*:
176
+ # - *format* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
177
+ #
178
+ # * *Returns*:
179
+ # - +self+
180
+ def with_output_format(format)
181
+ @query_string.set_param 'fm', format
182
+ self
183
+ end
184
+
185
+ # Configure the amount of compression for lossy file formats. Lower quality
186
+ # images will have a smaller file size. Only affects *jpg*, *pjpg*, and
187
+ # *webp* files.
188
+ #
189
+ # When no quality is specified for an image transformation, the default
190
+ # value of 85 is used.
191
+ #
192
+ # * *Args*:
193
+ # - *quality* (+integer+) The quality of the image between 1 and 100
194
+ #
195
+ # * *Returns*:
196
+ # - +self+
197
+ #
198
+ # * *Raises*:
199
+ # - +ArgumentError+ if +quality+ is not between 1 and 100 inclusive
200
+ def with_quality(quality)
201
+ raise ArgumentError, ONE_TO_100 unless quality.to_i >= 1 && quality.to_i <= 100
202
+
203
+ @query_string.set_param 'q', quality
204
+ self
205
+ end
206
+
207
+ # Sets the lossless parameter. If +true+, automatically sets the format
208
+ # to WebP.
209
+ #
210
+ # * *Args*:
211
+ # - *lossless*
212
+ # - +integer+ Either 1 or 0
213
+ # - +bool+ Either +true+ or +false+
214
+ # - +string+ Either 'true' or 'false'
215
+ #
216
+ # * *Returns*:
217
+ # - +self+
218
+ #
219
+ # * *Raises*:
220
+ # - +ArgumentError+ if +lossless+ cannot be parsed as a boolean
221
+ def with_lossless(lossless)
222
+ lossless = lossless.to_s.downcase
223
+ raise ArgumentError, BOOLEAN_PARAM unless bool? lossless
224
+
225
+ @query_string.set_param 'lossless', lossless
226
+ @query_string.set_param 'fm', Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder::FORMAT_WEBP if %w[true 1].include? lossless
227
+ self
228
+ end
229
+
230
+ # Enables or disables automatic format selection. If enabled, it will
231
+ # override the format parameter and deliver WebP instead. If the browser
232
+ # does not support WebP, the value of the format parameter will be used.
233
+ #
234
+ # * *Args*:
235
+ # - *auto*
236
+ # - +integer+ Either 1 or 0
237
+ # - +bool+ Either +true+ or +false+
238
+ # - +string+ Either 'true' or 'false'
239
+ #
240
+ # * *Returns*:
241
+ # - +self+
242
+ #
243
+ # * *Raises*:
244
+ # - +ArgumentError+ if +auto+ cannot be parsed as a boolean
245
+ def with_auto_format_selection(auto)
246
+ auto = auto.to_s.downcase
247
+ raise ArgumentError, BOOLEAN_PARAM unless bool? auto
248
+
249
+ if %w[true 1].include? auto
250
+ @query_string.set_param 'auto', 'format'
251
+ else
252
+ @query_string.remove_param 'auto'
253
+ end
254
+ self
255
+ end
256
+
257
+ private
258
+
259
+ def valid_dims?(x, y, z)
260
+ (x.to_f >= 0.0 && x.to_f <= 1.0) &&
261
+ (y.to_f >= 0.0 && y.to_f <= 1.0) &&
262
+ (z.to_i >= 1)
263
+ end
264
+
265
+ def bool?(value)
266
+ %w[true false 0 1].include? value
267
+ end
268
+ end
269
+ end
270
+ end
271
+ end
272
+ end