kontent-delivery-sdk-ruby 2.0.12 → 2.0.19

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 +575 -543
  4. data/bin/console +14 -14
  5. data/bin/setup +8 -8
  6. data/lib/delivery/builders/image_transformation_builder.rb +271 -271
  7. data/lib/delivery/builders/url_builder.rb +120 -117
  8. data/lib/delivery/client/delivery_client.rb +176 -155
  9. data/lib/delivery/client/delivery_query.rb +302 -286
  10. data/lib/delivery/client/request_manager.rb +125 -121
  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/pagination.rb +22 -22
  14. data/lib/delivery/models/taxonomy_group.rb +39 -39
  15. data/lib/delivery/query_parameters/filters.rb +158 -158
  16. data/lib/delivery/query_parameters/parameter_base.rb +46 -46
  17. data/lib/delivery/query_parameters/query_string.rb +78 -78
  18. data/lib/delivery/resolvers/content_link_resolver.rb +102 -102
  19. data/lib/delivery/resolvers/inline_content_item_resolver.rb +75 -75
  20. data/lib/delivery/resolvers/linked_item_resolver.rb +37 -37
  21. data/lib/delivery/responses/delivery_element_response.rb +34 -34
  22. data/lib/delivery/responses/delivery_item_listing_response.rb +54 -54
  23. data/lib/delivery/responses/delivery_item_response.rb +40 -40
  24. data/lib/delivery/responses/delivery_items_feed_response.rb +58 -0
  25. data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +47 -47
  26. data/lib/delivery/responses/delivery_taxonomy_response.rb +33 -33
  27. data/lib/delivery/responses/delivery_type_listing_response.rb +46 -46
  28. data/lib/delivery/responses/delivery_type_response.rb +32 -32
  29. data/lib/delivery/responses/response_base.rb +39 -39
  30. data/lib/delivery/tests/401.json +5 -5
  31. data/lib/delivery/tests/429.json +4 -4
  32. data/lib/delivery/tests/fake_responder.rb +110 -84
  33. data/lib/delivery/tests/filtering/items_gt.json +565 -565
  34. data/lib/delivery/tests/filtering/items_with_count.json +4985 -4985
  35. data/lib/delivery/tests/filtering/multiple.json +282 -282
  36. data/lib/delivery/tests/filtering/pagination_about_us.json +646 -646
  37. data/lib/delivery/tests/generic/items.json +4984 -4984
  38. data/lib/delivery/tests/generic/items/about_us.json +227 -227
  39. data/lib/delivery/tests/generic/items/aeropress_filters.json +138 -138
  40. data/lib/delivery/tests/generic/items/coffee_processing_techniques.json +168 -168
  41. data/lib/delivery/tests/generic/items/empty_rich_text.json +24 -0
  42. data/lib/delivery/tests/generic/items/rich_text_complex_tables.json +81 -0
  43. data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +620 -620
  44. data/lib/delivery/tests/generic/taxonomies.json +126 -126
  45. data/lib/delivery/tests/generic/types.json +780 -780
  46. data/lib/delivery/tests/generic/types/brewer/elements/product_status.json +5 -5
  47. data/lib/delivery/tests/items_feed/articles_feed_1.json +39 -0
  48. data/lib/delivery/tests/items_feed/articles_feed_2.json +78 -0
  49. data/lib/delivery/tests/items_feed/articles_feed_3.json +104 -0
  50. data/lib/delivery/version.rb +7 -7
  51. data/lib/kontent-delivery-sdk-ruby.rb +20 -19
  52. metadata +40 -15
@@ -1,286 +1,302 @@
1
- require 'delivery/builders/url_builder'
2
- require 'delivery/query_parameters/query_string'
3
- require 'delivery/version'
4
-
5
- module Kentico
6
- module Kontent
7
- module Delivery
8
- # Responsible for executing REST requests to Kentico Kontent.
9
- class DeliveryQuery
10
- ERROR_PREVIEW = 'Preview is enabled for the query, but the key is null. '\
11
- 'You can set the preview_key attribute of the query, or '\
12
- 'when you initialize the client. See '\
13
- 'https://github.com/Kentico/kontent-delivery-sdk-ruby#previewing-unpublished-content'.freeze
14
- ERROR_PARAMS = 'Only filters may be passed in the .item or .items methods'\
15
- '. See https://github.com/Kentico/kontent-delivery-sdk-ruby#filtering'.freeze
16
- attr_accessor :use_preview,
17
- :preview_key,
18
- :project_id,
19
- :code_name,
20
- :secure_key,
21
- :content_link_url_resolver,
22
- :inline_content_item_resolver,
23
- :query_type,
24
- :query_string,
25
- :content_type,
26
- :with_retry_policy
27
-
28
- # Setter for a custom URL.
29
- #
30
- # * *Args*:
31
- # - *url* (+string+) _optional_ Custom URL to use for the query
32
- #
33
- # * *Returns*:
34
- # - +self+
35
- def url(url = nil)
36
- @url = url unless url.nil?
37
- self
38
- end
39
-
40
- # Constructor. Queries should not be instantiated using the constructor, but
41
- # using one of the Kentico::Kontent::Delivery::DeliveryClient methods instead.
42
- #
43
- # * *Args*:
44
- # - *config* (+Hash+) A hash in which each key automatically has its value paired with the corresponding attribute
45
- def initialize(config)
46
- @headers = {}
47
-
48
- # Map each hash value to attr with corresponding key
49
- # from https://stackoverflow.com/a/2681014/5656214
50
- config.each do |k, v|
51
- instance_variable_set("@#{k}", v) unless v.nil?
52
- end
53
- self.query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
54
- return if config.fetch(:qp, nil).nil?
55
-
56
- # Query parameters were passed, parse and validate
57
- validate_params config.fetch(:qp)
58
- end
59
-
60
- # Executes the REST request.
61
- #
62
- # * *Returns*:
63
- # - Kentico::Kontent::Delivery::Responses::ResponseBase or a class extending it
64
- def execute
65
- resp = Kentico::Kontent::Delivery::RequestManager.start self, headers
66
- yield resp if block_given?
67
- resp
68
- end
69
-
70
- # Determines whether the query should use preview mode.
71
- #
72
- # * *Returns*:
73
- # - +boolean+ Whether preview mode should be used for the query
74
- #
75
- # * *Raises*:
76
- # - +StandardError+ if +use_preview+ is true, but +preview_key+ is +nil+
77
- def should_preview
78
- raise ERROR_PREVIEW if use_preview && preview_key.nil?
79
-
80
- use_preview && !preview_key.nil?
81
- end
82
-
83
- # Enables the total_count attribute of the pagination object, which specifies
84
- # the total number of items returned by the query regardless of paging. See
85
- # https://docs.kontent.ai/reference/delivery-api#operation/list-content-items
86
- #
87
- # * *Returns*:
88
- # - +self+
89
- def include_total_count
90
- query_string.set_param('includeTotalCount', 1)
91
- self
92
- end
93
-
94
- # Sets a content link resolver to render links contained in rich text. See
95
- # https://github.com/Kentico/kontent-delivery-sdk-ruby#resolving-links
96
- #
97
- # * *Args*:
98
- # - *resolver* ( Kentico::Kontent::Delivery::Resolvers::ContentLinkResolver ) The resolver. Replaces a resolver registered during +DeliveryClient+ instantiation, for this query only.
99
- #
100
- # * *Returns*:
101
- # - +self+
102
- def with_link_resolver(resolver)
103
- self.content_link_url_resolver = resolver
104
- self
105
- end
106
-
107
- # Sets an inline content itme to render content items and components in rich text.
108
- # See https://github.com/Kentico/kontent-delivery-sdk-ruby#resolving-inline-content
109
- #
110
- # * *Args*:
111
- # - *resolver* ( Kentico::Kontent::Delivery::Resolvers::InlineContentItemResolver ) The resolver. Replaces a resolver registered during +DeliveryClient+ instantiation, for this query only.
112
- #
113
- # * *Returns*:
114
- # - +self+
115
- def with_inline_content_item_resolver(resolver)
116
- self.inline_content_item_resolver = resolver
117
- self
118
- end
119
-
120
- # Sets the 'order' query string parameter
121
- #
122
- # * *Args*:
123
- # - *value* (+string+) The value to order by
124
- # - *sort* (+string+) _optional_ The direction of the order, surrounded by brackets. The default value is '[asc]'
125
- #
126
- # * *Returns*:
127
- # - +self+
128
- def order_by(value, sort = '[asc]')
129
- query_string.set_param('order', value + sort)
130
- self
131
- end
132
-
133
- # Sets the 'skip' query string parameter for paging results.
134
- # See https://developer.kenticocloud.com/v1/reference#listing-response-paging
135
- #
136
- # * *Args*:
137
- # - *value* (+integer+) The number to skip by
138
- #
139
- # * *Returns*:
140
- # - +self+
141
- def skip(value)
142
- query_string.set_param('skip', value)
143
- self
144
- end
145
-
146
- # Sets the 'language' query string parameter. Language fallbacks will be used
147
- # if untranslated content items are found.
148
- # See https://developer.kenticocloud.com/docs/localization#section-getting-localized-content-items
149
- #
150
- # * *Args*:
151
- # - *value* (+string+) The code name of the desired language
152
- #
153
- # * *Returns*:
154
- # - +self+
155
- def language(value)
156
- query_string.set_param('language', value)
157
- self
158
- end
159
-
160
- # Sets the 'limit' query string parameter for paging results, or just to
161
- # return a specific number of content items.
162
- # See https://developer.kenticocloud.com/v1/reference#listing-response-paging
163
- #
164
- # * *Args*:
165
- # - *value* (+integer+) The number of content items to return
166
- #
167
- # * *Returns*:
168
- # - +self+
169
- def limit(value)
170
- query_string.set_param('limit', value)
171
- self
172
- end
173
-
174
- # Sets the 'elements' query string parameter to limit the elements returned
175
- # by the query.
176
- # See https://developer.kenticocloud.com/v1/reference#projection
177
- #
178
- # * *Args*:
179
- # - *value* (+Array+) A single string or array of strings specifying the desired elements, e.g. %w[price product_name image]
180
- #
181
- # * *Returns*:
182
- # - +self+
183
- def elements(value)
184
- query_string.set_param('elements', value)
185
- self
186
- end
187
-
188
- # Sets the 'depth' query string parameter to determine how many levels of
189
- # linked content items should be returned. By default, only 1 level of depth
190
- # is used.
191
- # See https://developer.kenticocloud.com/v1/reference#linked-content
192
- #
193
- # * *Args*:
194
- # - *value* (+integer+) Level of linked items to be returned
195
- #
196
- # * *Returns*:
197
- # - +self+
198
- def depth(value)
199
- query_string.set_param('depth', value)
200
- self
201
- end
202
-
203
- # Allows the request to bypass caching and return the latest content
204
- # directly from Kentico Kontent.
205
- # See https://github.com/Kentico/kontent-delivery-sdk-ruby#requesting-the-latest-content
206
- #
207
- # * *Returns*:
208
- # - +self+
209
- def request_latest_content
210
- @headers['X-KC-Wait-For-Loading-New-Content'] = true
211
- self
212
- end
213
-
214
- # Uses Kentico::Kontent::Delivery::Builders::UrlBuilder.provide_url to set
215
- # the URL for the query. The +UrlBuilder+ also validates the URL.
216
- #
217
- # * *Raises*:
218
- # - +UriFormatException+ if the URL is 65,519 characters or more
219
- #
220
- # * *Returns*:
221
- # - +string+ The full URL for this query
222
- def provide_url
223
- @url = Kentico::Kontent::Delivery::Builders::UrlBuilder.provide_url self if @url.nil?
224
- Kentico::Kontent::Delivery::Builders::UrlBuilder.validate_url @url
225
- @url
226
- end
227
-
228
- # Allows providing custom headers for client requests.
229
- # See https://github.com/Kentico/kontent-delivery-sdk-ruby#providing-custom-headers
230
- #
231
- # * *Args*:
232
- # - *headers* (+Hash+) A hash that corresponds to provided headers
233
- #
234
- # * *Returns*:
235
- # - +self+
236
- def custom_headers(headers)
237
- @custom_headers = headers
238
- self
239
- end
240
-
241
- private
242
-
243
- # Returns request headers that are extended with custom headers.
244
- # Custom headers do not override existing headers.
245
- #
246
- # * *Returns*
247
- # - +Hash+
248
- def headers
249
- headers = @headers.clone
250
- headers['X-KC-SDKID'] = provide_sdk_header
251
- headers['Authorization'] = "Bearer #{preview_key}" if should_preview
252
- headers['Authorization'] = "Bearer #{secure_key}" if !should_preview && secure_key
253
-
254
- if @custom_headers
255
- headers.merge!(@custom_headers) { |key, v1, v2| v1 }
256
- end
257
-
258
- headers
259
- end
260
-
261
- # Initializes the +query_string+ attribute with the passed array of
262
- # Kentico::Kontent::Delivery::QueryParameters::Filter objects.
263
- #
264
- # * *Raises*:
265
- # - +ArgumentError+ if one the passed objects is not a +Filter+
266
- def validate_params(query_parameters)
267
- params = if query_parameters.is_a? Array
268
- query_parameters
269
- else
270
- [query_parameters]
271
- end
272
- params.each do |p|
273
- query_string.set_param p
274
- unless p.is_a? Kentico::Kontent::Delivery::QueryParameters::Filter
275
- raise ArgumentError, ERROR_PARAMS
276
- end
277
- end
278
- end
279
-
280
- def provide_sdk_header
281
- "rubygems.org;kontent-delivery-sdk-ruby;#{Kentico::Kontent::Delivery::VERSION}"
282
- end
283
- end
284
- end
285
- end
286
- end
1
+ require 'delivery/builders/url_builder'
2
+ require 'delivery/query_parameters/query_string'
3
+ require 'delivery/version'
4
+
5
+ module Kentico
6
+ module Kontent
7
+ module Delivery
8
+ # Responsible for executing REST requests to Kentico Kontent.
9
+ class DeliveryQuery
10
+ ERROR_PREVIEW = 'Preview is enabled for the query, but the key is null. '\
11
+ 'You can set the preview_key attribute of the query, or '\
12
+ 'when you initialize the client. See '\
13
+ 'https://github.com/Kentico/kontent-delivery-sdk-ruby#previewing-unpublished-content'.freeze
14
+ ERROR_PARAMS = 'Only filters may be passed in the .item or .items methods'\
15
+ '. See https://github.com/Kentico/kontent-delivery-sdk-ruby#filtering'.freeze
16
+ HEADER_WAIT_FOR_CONTENT = 'X-KC-Wait-For-Loading-New-Content'.freeze
17
+ HEADER_SDK_ID = 'X-KC-SDKID'.freeze
18
+ HEADER_CONTINUATION = 'X-Continuation'.freeze
19
+ attr_accessor :use_preview,
20
+ :preview_key,
21
+ :project_id,
22
+ :code_name,
23
+ :secure_key,
24
+ :content_link_url_resolver,
25
+ :inline_content_item_resolver,
26
+ :query_type,
27
+ :query_string,
28
+ :content_type,
29
+ :with_retry_policy
30
+
31
+ # Setter for a custom URL.
32
+ #
33
+ # * *Args*:
34
+ # - *url* (+string+) _optional_ Custom URL to use for the query
35
+ #
36
+ # * *Returns*:
37
+ # - +self+
38
+ def url(url = nil)
39
+ @url = url unless url.nil?
40
+ self
41
+ end
42
+
43
+ # Constructor. Queries should not be instantiated using the constructor, but
44
+ # using one of the Kentico::Kontent::Delivery::DeliveryClient methods instead.
45
+ #
46
+ # * *Args*:
47
+ # - *config* (+Hash+) A hash in which each key automatically has its value paired with the corresponding attribute
48
+ def initialize(config)
49
+ @headers = {}
50
+
51
+ # Map each hash value to attr with corresponding key
52
+ # from https://stackoverflow.com/a/2681014/5656214
53
+ config.each do |k, v|
54
+ instance_variable_set("@#{k}", v) unless v.nil?
55
+ end
56
+ self.query_string = Kentico::Kontent::Delivery::QueryParameters::QueryString.new
57
+ return if config.fetch(:qp, nil).nil?
58
+
59
+ # Query parameters were passed, parse and validate
60
+ validate_params config.fetch(:qp)
61
+ end
62
+
63
+ # Executes the REST request.
64
+ #
65
+ # * *Returns*:
66
+ # - Kentico::Kontent::Delivery::Responses::ResponseBase or a class extending it
67
+ def execute
68
+ resp = Kentico::Kontent::Delivery::RequestManager.start self, headers
69
+ yield resp if block_given?
70
+ resp
71
+ end
72
+
73
+ # Determines whether the query should use preview mode.
74
+ #
75
+ # * *Returns*:
76
+ # - +boolean+ Whether preview mode should be used for the query
77
+ #
78
+ # * *Raises*:
79
+ # - +StandardError+ if +use_preview+ is true, but +preview_key+ is +nil+
80
+ def should_preview
81
+ raise ERROR_PREVIEW if use_preview && preview_key.nil?
82
+
83
+ use_preview && !preview_key.nil?
84
+ end
85
+
86
+ # Enables the total_count attribute of the pagination object, which specifies
87
+ # the total number of items returned by the query regardless of paging. See
88
+ # https://docs.kontent.ai/reference/delivery-api#operation/list-content-items
89
+ #
90
+ # * *Returns*:
91
+ # - +self+
92
+ def include_total_count
93
+ query_string.set_param('includeTotalCount', 1)
94
+ self
95
+ end
96
+
97
+ # Sets a content link resolver to render links contained in rich text. See
98
+ # https://github.com/Kentico/kontent-delivery-sdk-ruby#resolving-links
99
+ #
100
+ # * *Args*:
101
+ # - *resolver* ( Kentico::Kontent::Delivery::Resolvers::ContentLinkResolver ) The resolver. Replaces a resolver registered during +DeliveryClient+ instantiation, for this query only.
102
+ #
103
+ # * *Returns*:
104
+ # - +self+
105
+ def with_link_resolver(resolver)
106
+ self.content_link_url_resolver = resolver
107
+ self
108
+ end
109
+
110
+ # Sets an inline content itme to render content items and components in rich text.
111
+ # See https://github.com/Kentico/kontent-delivery-sdk-ruby#resolving-inline-content
112
+ #
113
+ # * *Args*:
114
+ # - *resolver* ( Kentico::Kontent::Delivery::Resolvers::InlineContentItemResolver ) The resolver. Replaces a resolver registered during +DeliveryClient+ instantiation, for this query only.
115
+ #
116
+ # * *Returns*:
117
+ # - +self+
118
+ def with_inline_content_item_resolver(resolver)
119
+ self.inline_content_item_resolver = resolver
120
+ self
121
+ end
122
+
123
+ # Sets the 'order' query string parameter
124
+ #
125
+ # * *Args*:
126
+ # - *value* (+string+) The value to order by
127
+ # - *sort* (+string+) _optional_ The direction of the order, surrounded by brackets. The default value is '[asc]'
128
+ #
129
+ # * *Returns*:
130
+ # - +self+
131
+ def order_by(value, sort = '[asc]')
132
+ query_string.set_param('order', value + sort)
133
+ self
134
+ end
135
+
136
+ # Sets the 'skip' query string parameter for paging results.
137
+ # See https://developer.kenticocloud.com/v1/reference#listing-response-paging
138
+ #
139
+ # * *Args*:
140
+ # - *value* (+integer+) The number to skip by
141
+ #
142
+ # * *Returns*:
143
+ # - +self+
144
+ def skip(value)
145
+ query_string.set_param('skip', value) unless query_type.eql? Kentico::Kontent::Delivery::QUERY_TYPE_ITEMS_FEED
146
+ self
147
+ end
148
+
149
+ # Sets the 'language' query string parameter. Language fallbacks will be used
150
+ # if untranslated content items are found.
151
+ # See https://developer.kenticocloud.com/docs/localization#section-getting-localized-content-items
152
+ #
153
+ # * *Args*:
154
+ # - *value* (+string+) The code name of the desired language
155
+ #
156
+ # * *Returns*:
157
+ # - +self+
158
+ def language(value)
159
+ query_string.set_param('language', value)
160
+ self
161
+ end
162
+
163
+ # Sets the 'limit' query string parameter for paging results, or just to
164
+ # return a specific number of content items.
165
+ # See https://developer.kenticocloud.com/v1/reference#listing-response-paging
166
+ #
167
+ # * *Args*:
168
+ # - *value* (+integer+) The number of content items to return
169
+ #
170
+ # * *Returns*:
171
+ # - +self+
172
+ def limit(value)
173
+ query_string.set_param('limit', value) unless query_type.eql? Kentico::Kontent::Delivery::QUERY_TYPE_ITEMS_FEED
174
+ self
175
+ end
176
+
177
+ # Sets the 'elements' query string parameter to limit the elements returned
178
+ # by the query.
179
+ # See https://developer.kenticocloud.com/v1/reference#projection
180
+ #
181
+ # * *Args*:
182
+ # - *value* (+Array+) A single string or array of strings specifying the desired elements, e.g. %w[price product_name image]
183
+ #
184
+ # * *Returns*:
185
+ # - +self+
186
+ def elements(value)
187
+ query_string.set_param('elements', value)
188
+ self
189
+ end
190
+
191
+ # Sets the 'depth' query string parameter to determine how many levels of
192
+ # linked content items should be returned. By default, only 1 level of depth
193
+ # is used.
194
+ # See https://developer.kenticocloud.com/v1/reference#linked-content
195
+ #
196
+ # * *Args*:
197
+ # - *value* (+integer+) Level of linked items to be returned
198
+ #
199
+ # * *Returns*:
200
+ # - +self+
201
+ def depth(value)
202
+ query_string.set_param('depth', value) unless query_type.eql? Kentico::Kontent::Delivery::QUERY_TYPE_ITEMS_FEED
203
+ self
204
+ end
205
+
206
+ # Allows the request to bypass caching and return the latest content
207
+ # directly from Kentico Kontent.
208
+ # See https://github.com/Kentico/kontent-delivery-sdk-ruby#requesting-the-latest-content
209
+ #
210
+ # * *Returns*:
211
+ # - +self+
212
+ def request_latest_content
213
+ @headers[HEADER_WAIT_FOR_CONTENT] = true
214
+ self
215
+ end
216
+
217
+ # Uses Kentico::Kontent::Delivery::Builders::UrlBuilder.provide_url to set
218
+ # the URL for the query. The +UrlBuilder+ also validates the URL.
219
+ #
220
+ # * *Raises*:
221
+ # - +UriFormatException+ if the URL is 65,519 characters or more
222
+ #
223
+ # * *Returns*:
224
+ # - +string+ The full URL for this query
225
+ def provide_url
226
+ @url = Kentico::Kontent::Delivery::Builders::UrlBuilder.provide_url self if @url.nil?
227
+ Kentico::Kontent::Delivery::Builders::UrlBuilder.validate_url @url
228
+ @url
229
+ end
230
+
231
+ # Allows providing custom headers for client requests.
232
+ # See https://github.com/Kentico/kontent-delivery-sdk-ruby#providing-custom-headers
233
+ #
234
+ # * *Args*:
235
+ # - *headers* (+Hash+) A hash that corresponds to provided headers
236
+ #
237
+ # * *Returns*:
238
+ # - +self+
239
+ def custom_headers(headers)
240
+ @custom_headers = headers
241
+ self
242
+ end
243
+
244
+ def update_continuation(token)
245
+ @headers[HEADER_CONTINUATION] = token
246
+ self
247
+ end
248
+
249
+ def continuation_exists?
250
+ !continuation_token.nil?
251
+ end
252
+
253
+ def continuation_token
254
+ @headers[HEADER_CONTINUATION]
255
+ end
256
+
257
+ private
258
+
259
+ # Returns request headers that are extended with custom headers.
260
+ # Custom headers do not override existing headers.
261
+ #
262
+ # * *Returns*
263
+ # - +Hash+
264
+ def headers
265
+ headers = @headers.clone
266
+ headers[HEADER_SDK_ID] = provide_sdk_header
267
+ headers['Authorization'] = "Bearer #{preview_key}" if should_preview
268
+ headers['Authorization'] = "Bearer #{secure_key}" if !should_preview && secure_key
269
+
270
+ if @custom_headers
271
+ headers.merge!(@custom_headers) { |key, v1, v2| v1 }
272
+ end
273
+
274
+ headers
275
+ end
276
+
277
+ # Initializes the +query_string+ attribute with the passed array of
278
+ # Kentico::Kontent::Delivery::QueryParameters::Filter objects.
279
+ #
280
+ # * *Raises*:
281
+ # - +ArgumentError+ if one the passed objects is not a +Filter+
282
+ def validate_params(query_parameters)
283
+ params = if query_parameters.is_a? Array
284
+ query_parameters
285
+ else
286
+ [query_parameters]
287
+ end
288
+ params.each do |p|
289
+ query_string.set_param p
290
+ unless p.is_a? Kentico::Kontent::Delivery::QueryParameters::Filter
291
+ raise ArgumentError, ERROR_PARAMS
292
+ end
293
+ end
294
+ end
295
+
296
+ def provide_sdk_header
297
+ "rubygems.org;kontent-delivery-sdk-ruby;#{Kentico::Kontent::Delivery::VERSION}"
298
+ end
299
+ end
300
+ end
301
+ end
302
+ end