kontent-ai-delivery 3.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.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +21 -0
  3. data/README.md +617 -0
  4. data/bin/console +14 -0
  5. data/bin/setup +8 -0
  6. data/lib/delivery/builders/image_transformation_builder.rb +272 -0
  7. data/lib/delivery/builders/url_builder.rb +123 -0
  8. data/lib/delivery/client/delivery_client.rb +184 -0
  9. data/lib/delivery/client/delivery_query.rb +308 -0
  10. data/lib/delivery/client/request_manager.rb +127 -0
  11. data/lib/delivery/models/content_item.rb +153 -0
  12. data/lib/delivery/models/content_type.rb +41 -0
  13. data/lib/delivery/models/language.rb +29 -0
  14. data/lib/delivery/models/pagination.rb +22 -0
  15. data/lib/delivery/models/taxonomy_group.rb +39 -0
  16. data/lib/delivery/query_parameters/filters.rb +201 -0
  17. data/lib/delivery/query_parameters/parameter_base.rb +56 -0
  18. data/lib/delivery/query_parameters/query_string.rb +78 -0
  19. data/lib/delivery/resolvers/content_link_resolver.rb +102 -0
  20. data/lib/delivery/resolvers/inline_content_item_resolver.rb +75 -0
  21. data/lib/delivery/resolvers/linked_item_resolver.rb +43 -0
  22. data/lib/delivery/responses/delivery_element_response.rb +34 -0
  23. data/lib/delivery/responses/delivery_item_listing_response.rb +54 -0
  24. data/lib/delivery/responses/delivery_item_response.rb +40 -0
  25. data/lib/delivery/responses/delivery_items_feed_response.rb +58 -0
  26. data/lib/delivery/responses/delivery_language_listing_response.rb +44 -0
  27. data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +47 -0
  28. data/lib/delivery/responses/delivery_taxonomy_response.rb +33 -0
  29. data/lib/delivery/responses/delivery_type_listing_response.rb +46 -0
  30. data/lib/delivery/responses/delivery_type_response.rb +32 -0
  31. data/lib/delivery/responses/response_base.rb +39 -0
  32. data/lib/delivery/tests/401.json +6 -0
  33. data/lib/delivery/tests/429.json +5 -0
  34. data/lib/delivery/tests/fake_responder.rb +99 -0
  35. data/lib/delivery/tests/filtering/items_with_count.json +5385 -0
  36. data/lib/delivery/tests/filtering/pagination.json +762 -0
  37. data/lib/delivery/tests/generic/items/about_us.json +277 -0
  38. data/lib/delivery/tests/generic/items/aeropress_filters.json +156 -0
  39. data/lib/delivery/tests/generic/items/coffee_processing_techniques.json +566 -0
  40. data/lib/delivery/tests/generic/items/empty_rich_text.json +24 -0
  41. data/lib/delivery/tests/generic/items/rich_text_complex_tables.json +81 -0
  42. data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +599 -0
  43. data/lib/delivery/tests/generic/items.json +5384 -0
  44. data/lib/delivery/tests/generic/languages.json +24 -0
  45. data/lib/delivery/tests/generic/taxonomies/manufacturer.json +30 -0
  46. data/lib/delivery/tests/generic/taxonomies.json +204 -0
  47. data/lib/delivery/tests/generic/types/brewer/elements/product_status.json +6 -0
  48. data/lib/delivery/tests/generic/types/brewer.json +89 -0
  49. data/lib/delivery/tests/generic/types.json +836 -0
  50. data/lib/delivery/tests/items_feed/articles_feed_1.json +39 -0
  51. data/lib/delivery/tests/items_feed/articles_feed_2.json +78 -0
  52. data/lib/delivery/tests/items_feed/articles_feed_3.json +104 -0
  53. data/lib/kontent-ai-delivery.rb +22 -0
  54. metadata +221 -0
@@ -0,0 +1,272 @@
1
+ require 'delivery/query_parameters/query_string'
2
+
3
+ module Kontent
4
+ module Ai
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://kontent.ai/learn/reference/image-transformation/ and
11
+ # https://github.com/kontent-ai/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://kontent.ai/learn/reference/image-transformation/#a-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
+ # Kontent::Ai::Delivery::Builders::ImageTransformationBuilder.transform
39
+ # instead of using this constructor.
40
+ def initialize(url)
41
+ @url = url
42
+ @query_string = Kontent::Ai::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 Kontent::Ai::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 Kontent::Ai::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', Kontent::Ai::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
@@ -0,0 +1,123 @@
1
+ module Kontent
2
+ module Ai
3
+ module Delivery
4
+ module Builders
5
+ # Internal class which generates the URL required for Delivery REST API
6
+ class UrlBuilder
7
+ URL_TEMPLATE_BASE = 'https://deliver.kontent.ai/%s'.freeze
8
+ URL_TEMPLATE_PREVIEW = 'https://preview-deliver.kontent.ai/%s'.freeze
9
+ URL_TEMPLATE_ITEM = '/items/%s'.freeze
10
+ URL_TEMPLATE_ITEMS = '/items'.freeze
11
+ URL_TEMPLATE_TYPE = '/types/%s'.freeze
12
+ URL_TEMPLATE_TYPES = '/types'.freeze
13
+ URL_TEMPLATE_ELEMENTS = '/types/%s/elements/%s'.freeze
14
+ URL_TEMPLATE_TAXONOMY = '/taxonomies/%s'.freeze
15
+ URL_TEMPLATE_TAXONOMIES = '/taxonomies'.freeze
16
+ URL_TEMPLATE_ITEMS_FEED = '/items-feed'.freeze
17
+ URL_TEMPLATE_LANGUAGES = '/languages'.freeze
18
+
19
+ URL_MAX_LENGTH = 65_519
20
+ MSG_LONG_QUERY = 'The request url is too long. Split your query into multiple calls.'.freeze
21
+
22
+ class << self
23
+ # Returns the proper domain for the request along with the
24
+ # query string parameters configured by the +DeliveryQuery+.
25
+ #
26
+ # * *Args*:
27
+ # - *query* ( Kontent::Ai::Delivery::DeliveryQuery )
28
+ #
29
+ # * *Returns*:
30
+ # - +string+ The full URL for a Delivery request
31
+ def provide_url(query)
32
+ url = provide_base_url(query)
33
+ url += provide_path_part(query)
34
+
35
+ if query.query_string.empty?
36
+ url
37
+ else
38
+ url + query.query_string.to_s
39
+ end
40
+ end
41
+
42
+ # Checks whether the provided URL is too long and raises an error if so.
43
+ #
44
+ # * *Args*:
45
+ # - *url* (+string+) A full Delivery URL
46
+ #
47
+ # * *Raises*:
48
+ # - +UriFormatException+ if the URL is 65,519 characters or more
49
+ def validate_url(url)
50
+ raise UriFormatException, MSG_LONG_QUERY if url.length > URL_MAX_LENGTH
51
+ end
52
+
53
+ private
54
+
55
+ # Returns relative path part of URL depending on query type.
56
+ #
57
+ # * *Args*:
58
+ # - *query* ( Kontent::Ai::Delivery::DeliveryQuery )
59
+ #
60
+ # * *Returns*:
61
+ # - +string+ The URL path part (without protocol or domain)
62
+ def provide_path_part(query)
63
+ case query.query_type
64
+ when Kontent::Ai::Delivery::QUERY_TYPE_ITEMS
65
+ provide_item query
66
+ when Kontent::Ai::Delivery::QUERY_TYPE_TYPES
67
+ provide_type query
68
+ when Kontent::Ai::Delivery::QUERY_TYPE_TAXONOMIES
69
+ provide_taxonomy query
70
+ when Kontent::Ai::Delivery::QUERY_TYPE_LANGUAGES
71
+ URL_TEMPLATE_LANGUAGES
72
+ when Kontent::Ai::Delivery::QUERY_TYPE_ELEMENT
73
+ format(URL_TEMPLATE_ELEMENTS, query.content_type, query.code_name)
74
+ when Kontent::Ai::Delivery::QUERY_TYPE_ITEMS_FEED
75
+ URL_TEMPLATE_ITEMS_FEED
76
+ end
77
+ end
78
+
79
+ def provide_item(query)
80
+ if query.code_name.nil?
81
+ URL_TEMPLATE_ITEMS
82
+ else
83
+ format(URL_TEMPLATE_ITEM, query.code_name)
84
+ end
85
+ end
86
+
87
+ def provide_taxonomy(query)
88
+ if query.code_name.nil?
89
+ URL_TEMPLATE_TAXONOMIES
90
+ else
91
+ format(URL_TEMPLATE_TAXONOMY, query.code_name)
92
+ end
93
+ end
94
+
95
+ def provide_type(query)
96
+ if query.code_name.nil?
97
+ URL_TEMPLATE_TYPES
98
+ else
99
+ format(URL_TEMPLATE_TYPE, query.code_name)
100
+ end
101
+ end
102
+
103
+ # Returns the protocol and domain with project ID. Domain changes
104
+ # according to the query's +use_preview+ attribute.
105
+ #
106
+ # * *Args*:
107
+ # - *query* ( Kontent::Ai::Delivery::DeliveryQuery )
108
+ #
109
+ # * *Returns*:
110
+ # - +string+ The URL with the project ID
111
+ def provide_base_url(query)
112
+ if query.use_preview
113
+ format(URL_TEMPLATE_PREVIEW, query.project_id)
114
+ else
115
+ format(URL_TEMPLATE_BASE, query.project_id)
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,184 @@
1
+ require 'delivery/client/delivery_query'
2
+ require 'delivery/responses/delivery_item_listing_response'
3
+ require 'delivery/responses/delivery_item_response'
4
+ require 'json'
5
+
6
+ module Kontent
7
+ module Ai
8
+ module Delivery
9
+ QUERY_TYPE_TYPES = 'QUERY_TYPE_TYPES'.freeze
10
+ QUERY_TYPE_ITEMS = 'QUERY_TYPE_ITEMS'.freeze
11
+ QUERY_TYPE_TAXONOMIES = 'QUERY_TYPE_TAXONOMIES'.freeze
12
+ QUERY_TYPE_ELEMENT = 'QUERY_TYPE_ELEMENT'.freeze
13
+ QUERY_TYPE_ITEMS_FEED = 'QUERY_TYPE_ITEMS_FEED'.freeze
14
+ QUERY_TYPE_LANGUAGES = 'QUERY_TYPE_LANGUAGES'.freeze
15
+
16
+ # Executes requests against the Kontent.ai Delivery API.
17
+ class DeliveryClient
18
+ attr_accessor :use_preview
19
+
20
+ # Constructor. Accepts a hash with the options for client.
21
+ #
22
+ # * *Args*:
23
+ # - *config* (+Hash+) May contain the following keys:
24
+ # - project_id (+string+) _required_
25
+ # - preview_key (+string+)
26
+ # - secure_key (+string+)
27
+ # - content_link_url_resolver ( Kontent::Ai::Delivery::Resolvers::ContentLinkResolver )
28
+ # - inline_content_item_resolver ( Kontent::Ai::Delivery::Resolvers::InlineContentItemResolver )
29
+ # - with_retry_policy (+bool+)
30
+ def initialize(config)
31
+ @project_id = config.fetch(:project_id)
32
+ @preview_key = config.fetch(:preview_key, nil)
33
+ @secure_key = config.fetch(:secure_key, nil)
34
+ @content_link_url_resolver = config.fetch(:content_link_url_resolver, nil)
35
+ @inline_content_item_resolver = config.fetch(:inline_content_item_resolver, nil)
36
+ @with_retry_policy = config.fetch(:with_retry_policy, true)
37
+ self.use_preview = !@preview_key.nil?
38
+ end
39
+
40
+ # Return all content types of the project
41
+ #
42
+ # * *Returns*:
43
+ # - Kontent::Ai::Delivery::DeliveryQuery
44
+ def types
45
+ DeliveryQuery.new project_id: @project_id,
46
+ secure_key: @secure_key,
47
+ query_type: QUERY_TYPE_TYPES,
48
+ with_retry_policy: @with_retry_policy
49
+ end
50
+
51
+ # Return a single content type of the project
52
+ #
53
+ # * *Args*:
54
+ # - *code_name* (+string+) Code name of the desired content type
55
+ #
56
+ # * *Returns*:
57
+ # - Kontent::Ai::Delivery::DeliveryQuery
58
+ def type(code_name)
59
+ DeliveryQuery.new project_id: @project_id,
60
+ secure_key: @secure_key,
61
+ code_name: code_name,
62
+ query_type: QUERY_TYPE_TYPES,
63
+ with_retry_policy: @with_retry_policy
64
+ end
65
+
66
+ # Return a paginated feed of all content items of the project
67
+ #
68
+ # * *Args*:
69
+ # - *query_parameters* (+Array+) _optional_ One or more Kontent::Ai::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
70
+ #
71
+ # * *Returns*:
72
+ # - Kontent::Ai::Delivery::DeliveryQuery
73
+ def items_feed(query_parameters = [])
74
+ q = DeliveryQuery.new project_id: @project_id,
75
+ secure_key: @secure_key,
76
+ qp: query_parameters,
77
+ content_link_url_resolver: @content_link_url_resolver,
78
+ inline_content_item_resolver: @inline_content_item_resolver,
79
+ query_type: QUERY_TYPE_ITEMS_FEED,
80
+ with_retry_policy: @with_retry_policy
81
+ q.use_preview = use_preview
82
+ q.preview_key = @preview_key
83
+ q
84
+ end
85
+
86
+ # Return all content items of the project
87
+ #
88
+ # * *Args*:
89
+ # - *query_parameters* (+Array+) _optional_ One or more Kontent::Ai::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
90
+ #
91
+ # * *Returns*:
92
+ # - Kontent::Ai::Delivery::DeliveryQuery
93
+ def items(query_parameters = [])
94
+ q = DeliveryQuery.new project_id: @project_id,
95
+ secure_key: @secure_key,
96
+ qp: query_parameters,
97
+ content_link_url_resolver: @content_link_url_resolver,
98
+ inline_content_item_resolver: @inline_content_item_resolver,
99
+ query_type: QUERY_TYPE_ITEMS,
100
+ with_retry_policy: @with_retry_policy
101
+ q.use_preview = use_preview
102
+ q.preview_key = @preview_key
103
+ q
104
+ end
105
+
106
+ # Return a single content item of the project
107
+ #
108
+ # * *Args*:
109
+ # - *code_name* (+string+) The code name of the desired content item
110
+ # - *query_parameters* (+Array+) _optional_ One or more Kontent::Ai::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
111
+ #
112
+ # * *Returns*:
113
+ # - Kontent::Ai::Delivery::DeliveryQuery
114
+ def item(code_name, query_parameters = [])
115
+ q = DeliveryQuery.new project_id: @project_id,
116
+ secure_key: @secure_key,
117
+ code_name: code_name,
118
+ qp: query_parameters,
119
+ content_link_url_resolver: @content_link_url_resolver,
120
+ inline_content_item_resolver: @inline_content_item_resolver,
121
+ query_type: QUERY_TYPE_ITEMS,
122
+ with_retry_policy: @with_retry_policy
123
+ q.use_preview = use_preview
124
+ q.preview_key = @preview_key
125
+ q
126
+ end
127
+
128
+ # Return all taxonomy groups of the project
129
+ #
130
+ # * *Args*:
131
+ # - *query_parameters* (+Array+) _optional_ One or more Kontent::Ai::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
132
+ #
133
+ # * *Returns*:
134
+ # - Kontent::Ai::Delivery::DeliveryQuery
135
+ def taxonomies(query_parameters = [])
136
+ DeliveryQuery.new project_id: @project_id,
137
+ secure_key: @secure_key,
138
+ qp: query_parameters,
139
+ query_type: QUERY_TYPE_TAXONOMIES,
140
+ with_retry_policy: @with_retry_policy
141
+ end
142
+
143
+ # Return a single taxonomy group of the project
144
+ #
145
+ # * *Args*:
146
+ # - *code_name* (+string+) The code name of the desired taxonomy group
147
+ #
148
+ # * *Returns*:
149
+ # - Kontent::Ai::Delivery::DeliveryQuery
150
+ def taxonomy(code_name)
151
+ DeliveryQuery.new project_id: @project_id,
152
+ secure_key: @secure_key,
153
+ code_name: code_name,
154
+ query_type: QUERY_TYPE_TAXONOMIES,
155
+ with_retry_policy: @with_retry_policy
156
+ end
157
+
158
+ # Return a single element of a content type
159
+ #
160
+ # * *Args*:
161
+ # - *content_type* (+string+) The code name of the content type containing the element
162
+ # - *element* (+string+) The code name of the desired element
163
+ #
164
+ # * *Returns*:
165
+ # - Kontent::Ai::Delivery::DeliveryQuery
166
+ def element(content_type, element)
167
+ DeliveryQuery.new project_id: @project_id,
168
+ secure_key: @secure_key,
169
+ code_name: element,
170
+ content_type: content_type,
171
+ query_type: QUERY_TYPE_ELEMENT,
172
+ with_retry_policy: @with_retry_policy
173
+ end
174
+
175
+ def languages
176
+ DeliveryQuery.new project_id: @project_id,
177
+ secure_key: @secure_key,
178
+ query_type: QUERY_TYPE_LANGUAGES,
179
+ with_retry_policy: @with_retry_policy
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end