kontent-delivery-sdk-ruby 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +21 -0
  3. data/README.md +511 -0
  4. data/bin/console +14 -0
  5. data/bin/setup +8 -0
  6. data/lib/delivery/builders/image_transformation_builder.rb +271 -0
  7. data/lib/delivery/builders/url_builder.rb +117 -0
  8. data/lib/delivery/client/delivery_client.rb +155 -0
  9. data/lib/delivery/client/delivery_query.rb +249 -0
  10. data/lib/delivery/client/request_manager.rb +108 -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/pagination.rb +21 -0
  14. data/lib/delivery/models/taxonomy_group.rb +39 -0
  15. data/lib/delivery/query_parameters/filters.rb +158 -0
  16. data/lib/delivery/query_parameters/parameter_base.rb +44 -0
  17. data/lib/delivery/query_parameters/query_string.rb +78 -0
  18. data/lib/delivery/resolvers/content_link_resolver.rb +102 -0
  19. data/lib/delivery/resolvers/inline_content_item_resolver.rb +75 -0
  20. data/lib/delivery/resolvers/linked_item_resolver.rb +37 -0
  21. data/lib/delivery/responses/delivery_element_response.rb +33 -0
  22. data/lib/delivery/responses/delivery_item_listing_response.rb +53 -0
  23. data/lib/delivery/responses/delivery_item_response.rb +39 -0
  24. data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +46 -0
  25. data/lib/delivery/responses/delivery_taxonomy_response.rb +32 -0
  26. data/lib/delivery/responses/delivery_type_listing_response.rb +45 -0
  27. data/lib/delivery/responses/delivery_type_response.rb +31 -0
  28. data/lib/delivery/responses/response_base.rb +36 -0
  29. data/lib/delivery/tests/401.json +6 -0
  30. data/lib/delivery/tests/fake_responder.rb +67 -0
  31. data/lib/delivery/tests/filtering/items_gt.json +566 -0
  32. data/lib/delivery/tests/filtering/multiple.json +283 -0
  33. data/lib/delivery/tests/filtering/pagination_about_us.json +647 -0
  34. data/lib/delivery/tests/generic/items.json +4985 -0
  35. data/lib/delivery/tests/generic/items/about_us.json +228 -0
  36. data/lib/delivery/tests/generic/items/aeropress_filters.json +139 -0
  37. data/lib/delivery/tests/generic/items/coffee_processing_techniques.json +169 -0
  38. data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +621 -0
  39. data/lib/delivery/tests/generic/taxonomies.json +127 -0
  40. data/lib/delivery/tests/generic/types.json +781 -0
  41. data/lib/delivery/tests/generic/types/brewer/elements/product_status.json +6 -0
  42. data/lib/delivery/version.rb +7 -0
  43. data/lib/kontent-delivery-sdk-ruby.rb +19 -0
  44. metadata +200 -0
data/bin/console ADDED
@@ -0,0 +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__)
data/bin/setup ADDED
@@ -0,0 +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
@@ -0,0 +1,271 @@
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 'crop'
132
+ @query_string.set_param 'rect', "#{x},#{y},#{width},#{height}"
133
+ self
134
+ end
135
+
136
+ # Sets the point of interest when cropping the image.
137
+ # Setting this will remove the source rectangle region,
138
+ # as the two options are incompatible. It also automatically sets the
139
+ # crop to "focalpoint" and fit to "crop"
140
+ #
141
+ # * *Args*:
142
+ # - *x* (+float+) Percentage of the image's width between 0 and 1
143
+ # - *y* (+float+) Percentage of the image's height between 0 and 1
144
+ # - *z* (+integer+) Amount of zoom to apply. A value of 1 is the default zoom, and each step represents 100% additional zoom.
145
+ #
146
+ # * *Returns*:
147
+ # - +self+
148
+ def with_focal_point(x, y, z)
149
+ raise ArgumentError, INVALID_PARAMS unless valid_dims?(x, y, z)
150
+
151
+ @query_string.remove_param 'rect'
152
+ @query_string.set_param 'fp-x', x
153
+ @query_string.set_param 'fp-y', y
154
+ @query_string.set_param 'fp-z', z
155
+ @query_string.set_param 'fit', ImageTransformationBuilder::FIT_MODE_CROP
156
+ @query_string.set_param 'crop', 'focalpoint'
157
+ self
158
+ end
159
+
160
+ # Sets the background color of any transparent areas of the image.
161
+ #
162
+ # * *Args*:
163
+ # - *color* (+string+) A valid 3, 4, 6, or 8 digit hexadecimal color, without the # symbol
164
+ #
165
+ # * *Returns*:
166
+ # - +self+
167
+ def with_background_color(color)
168
+ @query_string.set_param 'bg', color
169
+ self
170
+ end
171
+
172
+ # Sets the output format of the request for the image.
173
+ #
174
+ # * *Args*:
175
+ # - *format* (+string+) Use constants from Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder
176
+ #
177
+ # * *Returns*:
178
+ # - +self+
179
+ def with_output_format(format)
180
+ @query_string.set_param 'fm', format
181
+ self
182
+ end
183
+
184
+ # Configure the amount of compression for lossy file formats. Lower quality
185
+ # images will have a smaller file size. Only affects *jpg*, *pjpg*, and
186
+ # *webp* files.
187
+ #
188
+ # When no quality is specified for an image transformation, the default
189
+ # value of 85 is used.
190
+ #
191
+ # * *Args*:
192
+ # - *quality* (+integer+) The quality of the image between 1 and 100
193
+ #
194
+ # * *Returns*:
195
+ # - +self+
196
+ #
197
+ # * *Raises*:
198
+ # - +ArgumentError+ if +quality+ is not between 1 and 100 inclusive
199
+ def with_quality(quality)
200
+ raise ArgumentError, ONE_TO_100 unless quality.to_i >= 1 && quality.to_i <= 100
201
+
202
+ @query_string.set_param 'q', quality
203
+ self
204
+ end
205
+
206
+ # Sets the lossless parameter. If +true+, automatically sets the format
207
+ # to WebP.
208
+ #
209
+ # * *Args*:
210
+ # - *lossless*
211
+ # - +integer+ Either 1 or 0
212
+ # - +bool+ Either +true+ or +false+
213
+ # - +string+ Either 'true' or 'false'
214
+ #
215
+ # * *Returns*:
216
+ # - +self+
217
+ #
218
+ # * *Raises*:
219
+ # - +ArgumentError+ if +lossless+ cannot be parsed as a boolean
220
+ def with_lossless(lossless)
221
+ lossless = lossless.to_s.downcase
222
+ raise ArgumentError, BOOLEAN_PARAM unless bool? lossless
223
+
224
+ @query_string.set_param 'lossless', lossless
225
+ @query_string.set_param 'fm', Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder::FORMAT_WEBP if %w[true 1].include? lossless
226
+ self
227
+ end
228
+
229
+ # Enables or disables automatic format selection. If enabled, it will
230
+ # override the format parameter and deliver WebP instead. If the browser
231
+ # does not support WebP, the value of the format parameter will be used.
232
+ #
233
+ # * *Args*:
234
+ # - *auto*
235
+ # - +integer+ Either 1 or 0
236
+ # - +bool+ Either +true+ or +false+
237
+ # - +string+ Either 'true' or 'false'
238
+ #
239
+ # * *Returns*:
240
+ # - +self+
241
+ #
242
+ # * *Raises*:
243
+ # - +ArgumentError+ if +auto+ cannot be parsed as a boolean
244
+ def with_auto_format_selection(auto)
245
+ auto = auto.to_s.downcase
246
+ raise ArgumentError, BOOLEAN_PARAM unless bool? auto
247
+
248
+ if %w[true 1].include? auto
249
+ @query_string.set_param 'auto', 'format'
250
+ else
251
+ @query_string.remove_param 'auto'
252
+ end
253
+ self
254
+ end
255
+
256
+ private
257
+
258
+ def valid_dims?(x, y, z)
259
+ (x.to_f >= 0.0 && x.to_f <= 1.0) &&
260
+ (y.to_f >= 0.0 && y.to_f <= 1.0) &&
261
+ (z.to_i >= 1)
262
+ end
263
+
264
+ def bool?(value)
265
+ %w[true false 0 1].include? value
266
+ end
267
+ end
268
+ end
269
+ end
270
+ end
271
+ end
@@ -0,0 +1,117 @@
1
+ module Kentico
2
+ module Kontent
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
+
17
+ URL_MAX_LENGTH = 65_519
18
+ MSG_LONG_QUERY = 'The request url is too long. Split your query into multiple calls.'.freeze
19
+
20
+ class << self
21
+ # Returns the proper domain for the request along with the
22
+ # query string parameters configured by the +DeliveryQuery+.
23
+ #
24
+ # * *Args*:
25
+ # - *query* ( Kentico::Kontent::Delivery::DeliveryQuery )
26
+ #
27
+ # * *Returns*:
28
+ # - +string+ The full URL for a Delivery request
29
+ def provide_url(query)
30
+ url = provide_base_url(query)
31
+ url += provide_path_part(query)
32
+
33
+ if query.query_string.empty?
34
+ url
35
+ else
36
+ url + query.query_string.to_s
37
+ end
38
+ end
39
+
40
+ # Checks whether the provided URL is too long and raises an error if so.
41
+ #
42
+ # * *Args*:
43
+ # - *url* (+string+) A full Delivery URL
44
+ #
45
+ # * *Raises*:
46
+ # - +UriFormatException+ if the URL is 65,519 characters or more
47
+ def validate_url(url)
48
+ raise UriFormatException, MSG_LONG_QUERY if url.length > URL_MAX_LENGTH
49
+ end
50
+
51
+ private
52
+
53
+ # Returns relative path part of URL depending on query type.
54
+ #
55
+ # * *Args*:
56
+ # - *query* ( Kentico::Kontent::Delivery::DeliveryQuery )
57
+ #
58
+ # * *Returns*:
59
+ # - +string+ The URL path part (without protocol or domain)
60
+ def provide_path_part(query)
61
+ case query.query_type
62
+ when Kentico::Kontent::Delivery::QUERY_TYPE_ITEMS
63
+ provide_item query
64
+ when Kentico::Kontent::Delivery::QUERY_TYPE_TYPES
65
+ provide_type query
66
+ when Kentico::Kontent::Delivery::QUERY_TYPE_TAXONOMIES
67
+ provide_taxonomy query
68
+ when Kentico::Kontent::Delivery::QUERY_TYPE_ELEMENT
69
+ format(URL_TEMPLATE_ELEMENTS, query.content_type, query.code_name)
70
+ end
71
+ end
72
+
73
+ def provide_item(query)
74
+ if query.code_name.nil?
75
+ URL_TEMPLATE_ITEMS
76
+ else
77
+ format(URL_TEMPLATE_ITEM, query.code_name)
78
+ end
79
+ end
80
+
81
+ def provide_taxonomy(query)
82
+ if query.code_name.nil?
83
+ URL_TEMPLATE_TAXONOMIES
84
+ else
85
+ format(URL_TEMPLATE_TAXONOMY, query.code_name)
86
+ end
87
+ end
88
+
89
+ def provide_type(query)
90
+ if query.code_name.nil?
91
+ URL_TEMPLATE_TYPES
92
+ else
93
+ format(URL_TEMPLATE_TYPE, query.code_name)
94
+ end
95
+ end
96
+
97
+ # Returns the protocol and domain with project ID. Domain changes
98
+ # according to the query's +use_preview+ attribute.
99
+ #
100
+ # * *Args*:
101
+ # - *query* ( Kentico::Kontent::Delivery::DeliveryQuery )
102
+ #
103
+ # * *Returns*:
104
+ # - +string+ The URL with the project ID
105
+ def provide_base_url(query)
106
+ if query.use_preview
107
+ format(URL_TEMPLATE_PREVIEW, query.project_id)
108
+ else
109
+ format(URL_TEMPLATE_BASE, query.project_id)
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,155 @@
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 Kentico
7
+ module Kontent
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
+
14
+ # Executes requests against the Kentico Kontent Delivery API.
15
+ class DeliveryClient
16
+ attr_accessor :use_preview
17
+
18
+ # Constructor. Accepts a hash with the options for client.
19
+ #
20
+ # * *Args*:
21
+ # - *config* (+Hash+) May contain the following keys:
22
+ # - project_id (+string+) _required_
23
+ # - preview_key (+string+)
24
+ # - secure_key (+string+)
25
+ # - content_link_url_resolver ( Kentico::Kontent::Delivery::Resolvers::ContentLinkResolver )
26
+ # - inline_content_item_resolver ( Kentico::Kontent::Delivery::Resolvers::InlineContentItemResolver )
27
+ # - with_retry_policy (+bool+)
28
+ def initialize(config)
29
+ @project_id = config.fetch(:project_id)
30
+ @preview_key = config.fetch(:preview_key, nil)
31
+ @secure_key = config.fetch(:secure_key, nil)
32
+ @content_link_url_resolver = config.fetch(:content_link_url_resolver, nil)
33
+ @inline_content_item_resolver = config.fetch(:inline_content_item_resolver, nil)
34
+ @with_retry_policy = config.fetch(:with_retry_policy, true)
35
+ self.use_preview = !@preview_key.nil?
36
+ end
37
+
38
+ # Return all content types of the project
39
+ #
40
+ # * *Returns*:
41
+ # - Kentico::Kontent::Delivery::DeliveryQuery
42
+ def types
43
+ DeliveryQuery.new project_id: @project_id,
44
+ secure_key: @secure_key,
45
+ query_type: QUERY_TYPE_TYPES,
46
+ with_retry_policy: @with_retry_policy
47
+ end
48
+
49
+ # Return a single content type of the project
50
+ #
51
+ # * *Args*:
52
+ # - *code_name* (+string+) Code name of the desired content type
53
+ #
54
+ # * *Returns*:
55
+ # - Kentico::Kontent::Delivery::DeliveryQuery
56
+ def type(code_name)
57
+ DeliveryQuery.new project_id: @project_id,
58
+ secure_key: @secure_key,
59
+ code_name: code_name,
60
+ query_type: QUERY_TYPE_TYPES,
61
+ with_retry_policy: @with_retry_policy
62
+ end
63
+
64
+ # Return all content items of the project
65
+ #
66
+ # * *Args*:
67
+ # - *query_parameters* (+Array+) _optional_ One or more Kentico::Kontent::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
68
+ #
69
+ # * *Returns*:
70
+ # - Kentico::Kontent::Delivery::DeliveryQuery
71
+ def items(query_parameters = [])
72
+ q = DeliveryQuery.new project_id: @project_id,
73
+ secure_key: @secure_key,
74
+ qp: query_parameters,
75
+ content_link_url_resolver: @content_link_url_resolver,
76
+ inline_content_item_resolver: @inline_content_item_resolver,
77
+ query_type: QUERY_TYPE_ITEMS,
78
+ with_retry_policy: @with_retry_policy
79
+ q.use_preview = use_preview
80
+ q.preview_key = @preview_key
81
+ q
82
+ end
83
+
84
+ # Return a single content item of the project
85
+ #
86
+ # * *Args*:
87
+ # - *code_name* (+string+) The code name of the desired content item
88
+ # - *query_parameters* (+Array+) _optional_ One or more Kentico::Kontent::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
89
+ #
90
+ # * *Returns*:
91
+ # - Kentico::Kontent::Delivery::DeliveryQuery
92
+ def item(code_name, query_parameters = [])
93
+ q = DeliveryQuery.new project_id: @project_id,
94
+ secure_key: @secure_key,
95
+ code_name: code_name,
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 all taxonomy groups of the project
107
+ #
108
+ # * *Args*:
109
+ # - *query_parameters* (+Array+) _optional_ One or more Kentico::Kontent::Delivery::QueryParameters::Filter objects. A single object will automatically be converted into an Array.
110
+ #
111
+ # * *Returns*:
112
+ # - Kentico::Kontent::Delivery::DeliveryQuery
113
+ def taxonomies(query_parameters = [])
114
+ DeliveryQuery.new project_id: @project_id,
115
+ secure_key: @secure_key,
116
+ qp: query_parameters,
117
+ query_type: QUERY_TYPE_TAXONOMIES,
118
+ with_retry_policy: @with_retry_policy
119
+ end
120
+
121
+ # Return a single taxonomy group of the project
122
+ #
123
+ # * *Args*:
124
+ # - *code_name* (+string+) The code name of the desired taxonomy group
125
+ #
126
+ # * *Returns*:
127
+ # - Kentico::Kontent::Delivery::DeliveryQuery
128
+ def taxonomy(code_name)
129
+ DeliveryQuery.new project_id: @project_id,
130
+ secure_key: @secure_key,
131
+ code_name: code_name,
132
+ query_type: QUERY_TYPE_TAXONOMIES,
133
+ with_retry_policy: @with_retry_policy
134
+ end
135
+
136
+ # Return a single element of a content type
137
+ #
138
+ # * *Args*:
139
+ # - *content_type* (+string+) The code name of the content type containing the element
140
+ # - *element* (+string+) The code name of the desired element
141
+ #
142
+ # * *Returns*:
143
+ # - Kentico::Kontent::Delivery::DeliveryQuery
144
+ def element(content_type, element)
145
+ DeliveryQuery.new project_id: @project_id,
146
+ secure_key: @secure_key,
147
+ code_name: element,
148
+ content_type: content_type,
149
+ query_type: QUERY_TYPE_ELEMENT,
150
+ with_retry_policy: @with_retry_policy
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end