kontent-delivery-sdk-ruby 2.0.16 → 2.0.18
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.
- checksums.yaml +4 -4
 - data/README.md +31 -18
 - data/lib/delivery/responses/response_base.rb +2 -2
 - data/lib/delivery/tests/generic/items/empty_rich_text.json +24 -0
 - data/lib/delivery/tests/generic/items/rich_text_complex_tables.json +81 -0
 - data/lib/delivery/tests/generic/items/where_does_coffee_come_from_.json +1 -1
 - data/lib/delivery/version.rb +1 -1
 - metadata +9 -7
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3f75c228e2b2a9c4fabf5971b8610e8659fcafa31ebb603bb77918bd1ba314db
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 16048be6a0cc5e3749f090ef93b40e9b0899f18f576b1333e34cf93d05417f5f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bdace49434ca1bcbcb6947af19649696380290402df204650e165e984ba9d9b2901f3eee3f79ee7b1dc9198f6b17a2356fd52e0a48befb2c3aded4c0b08164d1
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e7067f01848f4de3ce01bcbd55fac0aafd2973e3b41013cd237bab00d9a2401e7698fdc91d69878767aaa7cbd7d4f7eb39c66a1bb89359d2433720e4965c11b2
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -23,7 +23,7 @@ class ApplicationController < ActionController::Base 
     | 
|
| 
       23 
23 
     | 
    
         
             
              PROJECT_ID = '<your-project-id>'.freeze
         
     | 
| 
       24 
24 
     | 
    
         
             
            ```
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            If you don't have the sample project installed in Kentico Kontent, you can generate a new project 
     | 
| 
      
 26 
     | 
    
         
            +
            If you don't have the sample project installed in Kentico Kontent, you can [generate a new sample project](https://docs.kontent.ai/tutorials/set-up-projects/manage-projects/managing-projects#a-creating-a-sample-project). Save the file, then open a terminal in the `/dancing_goat` directory and run the following commands:
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            ```
         
     | 
| 
       29 
29 
     | 
    
         
             
            bundle install
         
     | 
| 
         @@ -63,14 +63,14 @@ delivery_client = KK::DeliveryClient.new project_id: '<your-project-id>' 
     | 
|
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
            ### Previewing unpublished content
         
     | 
| 
       65 
65 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
            To enable  
     | 
| 
      
 66 
     | 
    
         
            +
            To [enable preview](https://docs.kontent.ai/tutorials/develop-apps/get-content/configuring-preview-for-content-items "See how to configure your app and Kontent project to enable content preview"), pass the Preview API Key to the constructor:
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
            ```ruby
         
     | 
| 
       69 
69 
     | 
    
         
             
            delivery_client = Kentico::Kontent::Delivery::DeliveryClient.new project_id: '<your-project-id>',
         
     | 
| 
       70 
70 
     | 
    
         
             
                                                                             preview_key: '<your-preview-key>'
         
     | 
| 
       71 
71 
     | 
    
         
             
            ```
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
            This enables preview, but you can toggle preview at any time by setting the `use_preview` attribute of DeliveryClient which is  
     | 
| 
      
 73 
     | 
    
         
            +
            This enables preview, but you can toggle preview at any time by setting the `use_preview` attribute of `DeliveryClient` which is propagated to all queries created by the client, _or_ per-query by setting its `use_preview` attribute:
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
            ```ruby
         
     | 
| 
       76 
76 
     | 
    
         
             
            # For all queries created by client
         
     | 
| 
         @@ -86,14 +86,14 @@ end 
     | 
|
| 
       86 
86 
     | 
    
         | 
| 
       87 
87 
     | 
    
         
             
            ### Making secure requests
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
            If you've [secured access](https:// 
     | 
| 
      
 89 
     | 
    
         
            +
            If you've [secured access](https://docs.kontent.ai/tutorials/develop-apps/get-content/securing-public-access "See how to enable secured access for your Kontent project") to your project, you need to provide the `DeliveryClient` with either the primary or secondary key:
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
            ```ruby
         
     | 
| 
       92 
92 
     | 
    
         
             
            Kentico::Kontent::Delivery::DeliveryClient.new project_id: '<your-project-id>',
         
     | 
| 
       93 
93 
     | 
    
         
             
                                                       secure_key: '<your-secure-key>'
         
     | 
| 
       94 
94 
     | 
    
         
             
            ```
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
            You can then request  
     | 
| 
      
 96 
     | 
    
         
            +
            You can then securely request published content in your project. Be sure to not expose the key if the file(s) it appears in are publicly available.
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
98 
     | 
    
         
             
            ### Retry policy
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
         @@ -137,7 +137,7 @@ response = delivery_client.items.execute 
     | 
|
| 
       137 
137 
     | 
    
         | 
| 
       138 
138 
     | 
    
         
             
            ### Filtering
         
     | 
| 
       139 
139 
     | 
    
         | 
| 
       140 
     | 
    
         
            -
            You can use [filtering](https:// 
     | 
| 
      
 140 
     | 
    
         
            +
            You can use [filtering](https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content "See content filtering options in Delivery API") to retrieve particular items. The filtering methods are applied directly to a string and the available methods are:
         
     | 
| 
       141 
141 
     | 
    
         | 
| 
       142 
142 
     | 
    
         
             
            |Method|Example|REST equivalent|
         
     | 
| 
       143 
143 
     | 
    
         
             
            |--|--|--|
         
     | 
| 
         @@ -171,12 +171,12 @@ The `.item` and `.items` methods return a `Kentico::Kontent::Delivery::DeliveryQ 
     | 
|
| 
       171 
171 
     | 
    
         | 
| 
       172 
172 
     | 
    
         
             
            |Method|Example|REST equivalent
         
     | 
| 
       173 
173 
     | 
    
         
             
            |--|--|--|
         
     | 
| 
       174 
     | 
    
         
            -
            |[order_by](https:// 
     | 
| 
       175 
     | 
    
         
            -
            |[skip](https:// 
     | 
| 
       176 
     | 
    
         
            -
            |[limit](https:// 
     | 
| 
       177 
     | 
    
         
            -
            |[elements](https:// 
     | 
| 
       178 
     | 
    
         
            -
            |[depth](https:// 
     | 
| 
       179 
     | 
    
         
            -
            |[language](https:// 
     | 
| 
      
 174 
     | 
    
         
            +
            |[order_by](https://docs.kontent.ai/reference/delivery-api#operation/list-content-items "order_by")|`order_by 'system.last_modified' '[desc]'`|?order=system.last_modified[desc]
         
     | 
| 
      
 175 
     | 
    
         
            +
            |[skip](https://docs.kontent.ai/reference/delivery-api#operation/list-content-items "skip")|`skip 5`|?skip=5
         
     | 
| 
      
 176 
     | 
    
         
            +
            |[limit](https://docs.kontent.ai/reference/delivery-api#operation/list-content-items "limit")|`limit 5`|?limit=5
         
     | 
| 
      
 177 
     | 
    
         
            +
            |[elements](https://docs.kontent.ai/reference/delivery-api#tag/Projection "elements")|`elements %w[price product_name image]`|?elements=price,product_name,image
         
     | 
| 
      
 178 
     | 
    
         
            +
            |[depth](https://docs.kontent.ai/reference/delivery-api#tag/Linked-content-and-components/linked-content-depth "depth")|`depth 0`|?depth=0
         
     | 
| 
      
 179 
     | 
    
         
            +
            |[language](https://docs.kontent.ai/tutorials/set-up-projects/set-up-languages/localization-in-kentico-kontent#a-understanding-language-fallbacks "language")|`language 'en'`|?language=en
         
     | 
| 
       180 
180 
     | 
    
         | 
| 
       181 
181 
     | 
    
         
             
            For example:
         
     | 
| 
       182 
182 
     | 
    
         | 
| 
         @@ -224,7 +224,7 @@ price = response.item.elements.price.value 
     | 
|
| 
       224 
224 
     | 
    
         | 
| 
       225 
225 
     | 
    
         
             
            ### Requesting the latest content
         
     | 
| 
       226 
226 
     | 
    
         | 
| 
       227 
     | 
    
         
            -
            Kentico caches content using Fastly, so requests made to Kentico Kontent may not be up-to-date. In some cases, such as when reacting to [webhook](https:// 
     | 
| 
      
 227 
     | 
    
         
            +
            Kentico caches content using Fastly, so requests made to Kentico Kontent may not be up-to-date. In some cases, such as when reacting to [webhook](https://docs.kontent.ai/tutorials/develop-apps/integrate/using-webhooks-for-automatic-updates) notifications, you might want to request the latest content from your Kentico Kontent project.
         
     | 
| 
       228 
228 
     | 
    
         | 
| 
       229 
229 
     | 
    
         
             
            You can check the headers of the response for the **X-Stale-Content** header to check if the response was served from cache:
         
     | 
| 
       230 
230 
     | 
    
         | 
| 
         @@ -294,7 +294,7 @@ end 
     | 
|
| 
       294 
294 
     | 
    
         | 
| 
       295 
295 
     | 
    
         
             
            ### Pagination
         
     | 
| 
       296 
296 
     | 
    
         | 
| 
       297 
     | 
    
         
            -
            The `DeliveryItemListingResponse` also contains a `pagination` attribute to access the [paging](https:// 
     | 
| 
      
 297 
     | 
    
         
            +
            The `DeliveryItemListingResponse` also contains a `pagination` attribute to access the [paging](https://docs.kontent.ai/reference/delivery-api#operation/list-content-items "paging") data for the Delivery query. This object contains the following attributes:
         
     | 
| 
       298 
298 
     | 
    
         | 
| 
       299 
299 
     | 
    
         
             
            - **skip**
         
     | 
| 
       300 
300 
     | 
    
         
             
            - **limit**
         
     | 
| 
         @@ -320,7 +320,7 @@ delivery_client.items 
     | 
|
| 
       320 
320 
     | 
    
         | 
| 
       321 
321 
     | 
    
         
             
            Use the `items_feed` method to retrieve a dynamically paginated list of content items in your project. The result will have a `more_results?` method which indicates that more items can be retrieved from the feed, using the `next_result` method.
         
     | 
| 
       322 
322 
     | 
    
         | 
| 
       323 
     | 
    
         
            -
            This method accepts all [filtering]( 
     | 
| 
      
 323 
     | 
    
         
            +
            This method accepts all [filtering](#filtering) and [parameters](https://github.com/Kentico/kontent-delivery-sdk-ruby#parameters) except _depth_, _skip_, and _limit_. You can read more about the /items-feed endpoint in the [Kontent documentation](https://docs.kontent.ai/reference/delivery-api#operation/enumerate-content-items)
         
     | 
| 
       324 
324 
     | 
    
         | 
| 
       325 
325 
     | 
    
         
             
            Below is an example that will load all content items of a project into a single array:
         
     | 
| 
       326 
326 
     | 
    
         | 
| 
         @@ -407,7 +407,7 @@ end 
     | 
|
| 
       407 
407 
     | 
    
         | 
| 
       408 
408 
     | 
    
         
             
            ## Retrieving content type elements
         
     | 
| 
       409 
409 
     | 
    
         | 
| 
       410 
     | 
    
         
            -
            Kentico Kontent provides an [endpoint](https:// 
     | 
| 
      
 410 
     | 
    
         
            +
            Kentico Kontent provides an [endpoint](https://docs.kontent.ai/reference/delivery-api#operation/retrieve-a-content-element) for obtaining details about a specific element of a content type. In the Ruby SDK, you can use the `.element` method:
         
     | 
| 
       411 
411 
     | 
    
         | 
| 
       412 
412 
     | 
    
         
             
            ```ruby
         
     | 
| 
       413 
413 
     | 
    
         
             
            delivery_client.element('brewer', 'product_status').execute do |response|
         
     | 
| 
         @@ -417,7 +417,7 @@ end 
     | 
|
| 
       417 
417 
     | 
    
         | 
| 
       418 
418 
     | 
    
         
             
            This returns a `Kentico::Kontent::Delivery::Responses::DeliveryElementResponse` where the `element` attribute is a dynamic OStruct representation of the JSON response. This means that you can access any property of the element by simply typing the name as in the above example.
         
     | 
| 
       419 
419 
     | 
    
         | 
| 
       420 
     | 
    
         
            -
            The element will always contain __codename__, __type__, and __name__, but multiple choice elements will also contain __options__ and taxonomy elements will contain __taxonomy_group__. The Ruby SDK fully supports obtaining [custom elements](https:// 
     | 
| 
      
 420 
     | 
    
         
            +
            The element will always contain __codename__, __type__, and __name__, but multiple choice elements will also contain __options__ and taxonomy elements will contain __taxonomy_group__. The Ruby SDK fully supports obtaining [custom elements](https://docs.kontent.ai/reference/custom-elements-js-api) using this approach and any other methods.
         
     | 
| 
       421 
421 
     | 
    
         | 
| 
       422 
422 
     | 
    
         
             
            ## Resolving links
         
     | 
| 
       423 
423 
     | 
    
         | 
| 
         @@ -521,9 +521,22 @@ delivery_client.items 
     | 
|
| 
       521 
521 
     | 
    
         
             
                           .with_inline_content_item_resolver MyItemResolver.new
         
     | 
| 
       522 
522 
     | 
    
         
             
            ```
         
     | 
| 
       523 
523 
     | 
    
         | 
| 
      
 524 
     | 
    
         
            +
            To resolve inline content in elements, you must call `get_string` similar to content item links:
         
     | 
| 
      
 525 
     | 
    
         
            +
             
     | 
| 
      
 526 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 527 
     | 
    
         
            +
            item_resolver = Kentico::Kontent::Delivery::Resolvers::InlineContentItemResolver.new(lambda do |item|
         
     | 
| 
      
 528 
     | 
    
         
            +
              return "<div>$#{item.elements.price.value}</div>" if item.system.type.eql? 'brewer'
         
     | 
| 
      
 529 
     | 
    
         
            +
            end)
         
     | 
| 
      
 530 
     | 
    
         
            +
            delivery_client = Kentico::Kontent::Delivery::DeliveryClient.new project_id: PROJECT_ID,
         
     | 
| 
      
 531 
     | 
    
         
            +
                                                                inline_content_item_resolver: item_resolver
         
     | 
| 
      
 532 
     | 
    
         
            +
            delivery_client.item('our_brewers').execute do |response|
         
     | 
| 
      
 533 
     | 
    
         
            +
              text = response.item.get_string 'body_copy'
         
     | 
| 
      
 534 
     | 
    
         
            +
            end
         
     | 
| 
      
 535 
     | 
    
         
            +
            ```
         
     | 
| 
      
 536 
     | 
    
         
            +
             
     | 
| 
       524 
537 
     | 
    
         
             
            ## Image transformation
         
     | 
| 
       525 
538 
     | 
    
         | 
| 
       526 
     | 
    
         
            -
            When you've obtained the URL for an asset, you can use our [Image Transformation API](https:// 
     | 
| 
      
 539 
     | 
    
         
            +
            When you've obtained the URL for an asset, you can use our [Image Transformation API](https://docs.kontent.ai/reference/image-transformation) to make on-the-fly modifications to the image. To do this, use the static `.transform` method of `Kentico::Kontent::Delivery::Builders::ImageTransformationBuilder`, then call the transformation methods. When you're done, call the `.url` method to get the new URL:
         
     | 
| 
       527 
540 
     | 
    
         | 
| 
       528 
541 
     | 
    
         
             
            ```ruby
         
     | 
| 
       529 
542 
     | 
    
         
             
            url = response.item.get_assets('teaser_image').first.url
         
     | 
| 
         @@ -15,9 +15,9 @@ module Kentico 
     | 
|
| 
       15 
15 
     | 
    
         
             
                      # * *Args*:
         
     | 
| 
       16 
16 
     | 
    
         
             
                      #   - *http_code* (+integer+) The status code returned by the REST request
         
     | 
| 
       17 
17 
     | 
    
         
             
                      #   - *message* (+string+) An informative message about the response, visible when calling +to_s+
         
     | 
| 
       18 
     | 
    
         
            -
                      #   - *headers* (+hash+) The headers of the REST response
         
     | 
| 
      
 18 
     | 
    
         
            +
                      #   - *headers* (+hash+) _optional_ The headers of the REST response
         
     | 
| 
       19 
19 
     | 
    
         
             
                      #   - *json* (+string+) _optional_ The complete, unmodified JSON response from the server
         
     | 
| 
       20 
     | 
    
         
            -
                      def initialize(http_code, message, headers, json = '')
         
     | 
| 
      
 20 
     | 
    
         
            +
                      def initialize(http_code, message, headers = {}, json = '')
         
     | 
| 
       21 
21 
     | 
    
         
             
                        self.http_code = http_code
         
     | 
| 
       22 
22 
     | 
    
         
             
                        self.message = message
         
     | 
| 
       23 
23 
     | 
    
         
             
                        self.headers = headers
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "item": {
         
     | 
| 
      
 3 
     | 
    
         
            +
                "system": {
         
     | 
| 
      
 4 
     | 
    
         
            +
                  "id": "00000000-0000-0000-0000-000000000001",
         
     | 
| 
      
 5 
     | 
    
         
            +
                  "name": "Fake item 1",
         
     | 
| 
      
 6 
     | 
    
         
            +
                  "codename": "empty_rich_text",
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "language": "en-US",
         
     | 
| 
      
 8 
     | 
    
         
            +
                  "type": "fake_type_1",
         
     | 
| 
      
 9 
     | 
    
         
            +
                  "sitemap_locations": [],
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "last_modified": "2018-01-01T00:00:00.0000000Z"
         
     | 
| 
      
 11 
     | 
    
         
            +
                },
         
     | 
| 
      
 12 
     | 
    
         
            +
                "elements": {
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "body_copy": {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    "type": "rich_text",
         
     | 
| 
      
 15 
     | 
    
         
            +
                    "name": "Body Copy",
         
     | 
| 
      
 16 
     | 
    
         
            +
                    "images": {},
         
     | 
| 
      
 17 
     | 
    
         
            +
                    "links": {},
         
     | 
| 
      
 18 
     | 
    
         
            +
                    "modular_content": [],
         
     | 
| 
      
 19 
     | 
    
         
            +
                    "value": ""
         
     | 
| 
      
 20 
     | 
    
         
            +
                  }
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
              },
         
     | 
| 
      
 23 
     | 
    
         
            +
              "modular_content": {}
         
     | 
| 
      
 24 
     | 
    
         
            +
            } 
         
     | 
| 
         @@ -0,0 +1,81 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "item": {
         
     | 
| 
      
 3 
     | 
    
         
            +
                "system": {
         
     | 
| 
      
 4 
     | 
    
         
            +
                  "id": "4ffc70ea-62f6-4726-a5bf-39896d7c91c4",
         
     | 
| 
      
 5 
     | 
    
         
            +
                  "name": "TEST tables",
         
     | 
| 
      
 6 
     | 
    
         
            +
                  "codename": "rich_text_complex_tables",
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "language": "en-US",
         
     | 
| 
      
 8 
     | 
    
         
            +
                  "type": "simple_rich_text",
         
     | 
| 
      
 9 
     | 
    
         
            +
                  "sitemap_locations": [],
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "last_modified": "2020-03-16T17:49:42.7165723Z"
         
     | 
| 
      
 11 
     | 
    
         
            +
                },
         
     | 
| 
      
 12 
     | 
    
         
            +
                "elements": {
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "rich_text": {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    "type": "rich_text",
         
     | 
| 
      
 15 
     | 
    
         
            +
                    "name": "Rich text",
         
     | 
| 
      
 16 
     | 
    
         
            +
                    "images": {
         
     | 
| 
      
 17 
     | 
    
         
            +
                      "bf509e0d-d9ed-4925-968e-29a1f6a561c4": {
         
     | 
| 
      
 18 
     | 
    
         
            +
                        "image_id": "bf509e0d-d9ed-4925-968e-29a1f6a561c4",
         
     | 
| 
      
 19 
     | 
    
         
            +
                        "description": null,
         
     | 
| 
      
 20 
     | 
    
         
            +
                        "url": "https://qa-assets-us-01.global.ssl.fastly.net:443/34aaa010-a788-0004-ce89-a1c49a062a65/625c11f0-9783-47d3-b80e-2afafb8862e3/pikachu.jpg",
         
     | 
| 
      
 21 
     | 
    
         
            +
                        "width": 945,
         
     | 
| 
      
 22 
     | 
    
         
            +
                        "height": 819
         
     | 
| 
      
 23 
     | 
    
         
            +
                      },
         
     | 
| 
      
 24 
     | 
    
         
            +
                      "a0c1b647-e0b1-478a-b7bd-8df80b55e9f7": {
         
     | 
| 
      
 25 
     | 
    
         
            +
                        "image_id": "a0c1b647-e0b1-478a-b7bd-8df80b55e9f7",
         
     | 
| 
      
 26 
     | 
    
         
            +
                        "description": null,
         
     | 
| 
      
 27 
     | 
    
         
            +
                        "url": "https://qa-assets-us-01.global.ssl.fastly.net:443/34aaa010-a788-0004-ce89-a1c49a062a65/d74603bb-2109-4d45-885d-ff15c6ed9582/likeaboss.jpg",
         
     | 
| 
      
 28 
     | 
    
         
            +
                        "width": 1280,
         
     | 
| 
      
 29 
     | 
    
         
            +
                        "height": 720
         
     | 
| 
      
 30 
     | 
    
         
            +
                      }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    },
         
     | 
| 
      
 32 
     | 
    
         
            +
                    "links": {
         
     | 
| 
      
 33 
     | 
    
         
            +
                      "5e1997a2-9f9b-43ba-92f3-3cb36409d811": {
         
     | 
| 
      
 34 
     | 
    
         
            +
                        "codename": "paper_filters_for_chemex",
         
     | 
| 
      
 35 
     | 
    
         
            +
                        "type": "accessory",
         
     | 
| 
      
 36 
     | 
    
         
            +
                        "url_slug": "paper-filters-for-chemex"
         
     | 
| 
      
 37 
     | 
    
         
            +
                      },
         
     | 
| 
      
 38 
     | 
    
         
            +
                      "4ffc70ea-62f6-4726-a5bf-39896d7c91c4": {
         
     | 
| 
      
 39 
     | 
    
         
            +
                        "codename": "test_tables",
         
     | 
| 
      
 40 
     | 
    
         
            +
                        "type": "simple_rich_text",
         
     | 
| 
      
 41 
     | 
    
         
            +
                        "url_slug": ""
         
     | 
| 
      
 42 
     | 
    
         
            +
                      },
         
     | 
| 
      
 43 
     | 
    
         
            +
                      "3120ec15-a4a2-47ec-8ccd-c85ac8ac5ba5": {
         
     | 
| 
      
 44 
     | 
    
         
            +
                        "codename": "which_brewing_fits_you_",
         
     | 
| 
      
 45 
     | 
    
         
            +
                        "type": "article",
         
     | 
| 
      
 46 
     | 
    
         
            +
                        "url_slug": "which-brewing-fits-you"
         
     | 
| 
      
 47 
     | 
    
         
            +
                      }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    },
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "modular_content": [],
         
     | 
| 
      
 50 
     | 
    
         
            +
                    "value": "<p>Hello world</p>\n<figure data-asset-id=\"bf509e0d-d9ed-4925-968e-29a1f6a561c4\" data-image-id=\"bf509e0d-d9ed-4925-968e-29a1f6a561c4\"><img src=\"https://qa-assets-us-01.global.ssl.fastly.net:443/34aaa010-a788-0004-ce89-a1c49a062a65/625c11f0-9783-47d3-b80e-2afafb8862e3/pikachu.jpg\" data-asset-id=\"bf509e0d-d9ed-4925-968e-29a1f6a561c4\" data-image-id=\"bf509e0d-d9ed-4925-968e-29a1f6a561c4\" alt=\"\"></figure>\n<p>Hello <a data-item-id=\"3ce384e6-ba4b-49c4-993a-ae4ee1e0a1cc\" href=\"\">world</a></p>\n<p><a data-item-id=\"5e1997a2-9f9b-43ba-92f3-3cb36409d811\" href=\"\">Hello </a>world</p>\n<table><tbody>\n  <tr><td><h1>Beautiful table on steroids</h1>\n<h2>Which was changed BTW</h2>\n<p>Supports</p>\n<ul>\n  <li>Lists</li>\n  <li><strong>Formatting</strong></li>\n  <li>Images\n    <ol>\n      <li>Yes, <a data-item-id=\"4ffc70ea-62f6-4726-a5bf-39896d7c91c4\" href=\"\">totally</a></li>\n      <li>Really</li>\n      <li><a data-item-id=\"3120ec15-a4a2-47ec-8ccd-c85ac8ac5ba5\" href=\"\">Wanna </a>see?</li>\n    </ol>\n  </li>\n</ul>\n<figure data-asset-id=\"a0c1b647-e0b1-478a-b7bd-8df80b55e9f7\" data-image-id=\"a0c1b647-e0b1-478a-b7bd-8df80b55e9f7\"><img src=\"https://qa-assets-us-01.global.ssl.fastly.net:443/34aaa010-a788-0004-ce89-a1c49a062a65/d74603bb-2109-4d45-885d-ff15c6ed9582/likeaboss.jpg\" data-asset-id=\"a0c1b647-e0b1-478a-b7bd-8df80b55e9f7\" data-image-id=\"a0c1b647-e0b1-478a-b7bd-8df80b55e9f7\" alt=\"\"></figure>\n<p><em>Thanks for watching!</em></p>\n</td><td>with</td><td>some</td></tr>\n  <tr><td>text</td><td>in</td><td>various</td></tr>\n  <tr><td>table</td><td>cells</td><td>!</td></tr>\n</tbody></table>\n<p>z</p>\n<p>dd</p>\n<table><tbody>\n  <tr><td>d</td><td>f</td><td>g</td></tr>\n  <tr><td>g</td><td>g</td><td>gg</td></tr>\n  <tr><td>g</td><td>g</td><td>g</td></tr>\n</tbody></table>\n<p>x</p>"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  },
         
     | 
| 
      
 52 
     | 
    
         
            +
                  "rich_text_2": {
         
     | 
| 
      
 53 
     | 
    
         
            +
                    "type": "rich_text",
         
     | 
| 
      
 54 
     | 
    
         
            +
                    "name": "Rich text 2",
         
     | 
| 
      
 55 
     | 
    
         
            +
                    "images": {},
         
     | 
| 
      
 56 
     | 
    
         
            +
                    "links": {},
         
     | 
| 
      
 57 
     | 
    
         
            +
                    "modular_content": [],
         
     | 
| 
      
 58 
     | 
    
         
            +
                    "value": "<p><br></p>"
         
     | 
| 
      
 59 
     | 
    
         
            +
                  },
         
     | 
| 
      
 60 
     | 
    
         
            +
                  "simple_text": {
         
     | 
| 
      
 61 
     | 
    
         
            +
                    "type": "text",
         
     | 
| 
      
 62 
     | 
    
         
            +
                    "name": "Simple text",
         
     | 
| 
      
 63 
     | 
    
         
            +
                    "value": ""
         
     | 
| 
      
 64 
     | 
    
         
            +
                  },
         
     | 
| 
      
 65 
     | 
    
         
            +
                  "second_rich_text": {
         
     | 
| 
      
 66 
     | 
    
         
            +
                    "type": "rich_text",
         
     | 
| 
      
 67 
     | 
    
         
            +
                    "name": "Second rich text",
         
     | 
| 
      
 68 
     | 
    
         
            +
                    "images": {},
         
     | 
| 
      
 69 
     | 
    
         
            +
                    "links": {},
         
     | 
| 
      
 70 
     | 
    
         
            +
                    "modular_content": [],
         
     | 
| 
      
 71 
     | 
    
         
            +
                    "value": "<p><br></p>"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  },
         
     | 
| 
      
 73 
     | 
    
         
            +
                  "ultimate_answer_to_life_universe_and_everything": {
         
     | 
| 
      
 74 
     | 
    
         
            +
                    "type": "number",
         
     | 
| 
      
 75 
     | 
    
         
            +
                    "name": "Ultimate answer to life universe and everything",
         
     | 
| 
      
 76 
     | 
    
         
            +
                    "value": null
         
     | 
| 
      
 77 
     | 
    
         
            +
                  }
         
     | 
| 
      
 78 
     | 
    
         
            +
                }
         
     | 
| 
      
 79 
     | 
    
         
            +
              },
         
     | 
| 
      
 80 
     | 
    
         
            +
              "modular_content": {}
         
     | 
| 
      
 81 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -50,7 +50,7 @@ 
     | 
|
| 
       50 
50 
     | 
    
         
             
                      "modular_content": [
         
     | 
| 
       51 
51 
     | 
    
         
             
                        "aeropress"
         
     | 
| 
       52 
52 
     | 
    
         
             
                      ],
         
     | 
| 
       53 
     | 
    
         
            -
                      "value": "<p>The history of coffee is patchy and full of myth and hearsay.</p>\n<object type=\"application/kenticocloud\" data-type=\"item\" data-rel=\"link\" data-codename=\"aeropress\"></object>\n<p><br></p>\n<p>One of the most popular story goes that Kaldi, an Ethiopian goatherd, saw his goats eating coffee berries and as a result becoming elated. So, Kaldi then tried them himself and thus discovered the potential of coffee. And that's where we got our name - Dancing Goat.</p>\n<p>Although it's far more likely that uses for coffee were developed over time and were discovered by people tasting various parts of the cherry,  the old fables do add a bit of romance and are very cute.</p>\n<p>Coffee requires a warm climate and lots of moisture, so it is produced within a belt extending around the world between the Tropic of Cancer and the Tropic of Capricorn.</p>\n<p>Coffee grows on trees that flower and produce fleshy red fruit (orange or yellow is also possible) called a drupe though it is popularly referred to as the ‘berry’ or ‘cherry’. What we refer to as coffee beans are actually seeds, which are produced in the centre of the drupe, often in pairs. After harvesting, the flesh of the drupe is washed or dried and the ‘beans’ extracted.</p>\n<p>Coffee beans vary in their shape, size, color as well as flavor depending on the region and conditions in which they were grown. The difference of aromas and flavors between various regional varietals is as vast as the regions they grow in. Just like the teas and wines of the world, and even more so. It is always worth trying new varietals that may stimulate your taste buds in a different way.</p>\n<p>The two major species of coffee are <em>Coffea arabica</em> and <em>Coffea canephora</em> (also called <em>Coffea robusta</em>).</p>\n<p>Arabica is believed to be the first species of coffee to have been cultivated.</p>\n<p>It requires more care during cultivation and is considered to produce better coffee than robusta. Arabica plants grow at high altitudes of around 1,000 to 2,000 meters, approximately 3,200 to 6,500 ft, above sea level in regions across South and Central America as well as Africa. Arabica is costlier to grow as it produces lower yields than Robusta despite requiring more labor. Despite all that, it is considered superior to robusta. The high demand and lower availability drives the price high. Arabica is the species most associated with specialty (sometimes referred to as gourmet) coffees.</p>\n<p>The only place where Arabica coffee grows indigenously is Ethiopia. It is the birthplace of coffee and also the only place in which it truly grows wild. All countries that produce Arabica coffees have transplanted plant stock directly from Ethiopia or from other countries that had already done so.</p>"
         
     | 
| 
      
 53 
     | 
    
         
            +
                      "value": "<p><object type=\"application/kenticocloud\" data-type=\"item\" data-rel=\"link\" data-codename=\"aeropress\"></object>The history of coffee is patchy and full of myth and hearsay.</p>\n<object type=\"application/kenticocloud\" data-type=\"item\" data-rel=\"link\" data-codename=\"aeropress\"></object>\n<p><br></p>\n<p>One of the most popular story goes that Kaldi, an Ethiopian goatherd, saw his goats eating coffee berries and as a result becoming elated. So, Kaldi then tried them himself and thus discovered the potential of coffee. And that's where we got our name - Dancing Goat.</p>\n<p>Although it's far more likely that uses for coffee were developed over time and were discovered by people tasting various parts of the cherry,  the old fables do add a bit of romance and are very cute.</p>\n<p>Coffee requires a warm climate and lots of moisture, so it is produced within a belt extending around the world between the Tropic of Cancer and the Tropic of Capricorn.</p>\n<p>Coffee grows on trees that flower and produce fleshy red fruit (orange or yellow is also possible) called a drupe though it is popularly referred to as the ‘berry’ or ‘cherry’. What we refer to as coffee beans are actually seeds, which are produced in the centre of the drupe, often in pairs. After harvesting, the flesh of the drupe is washed or dried and the ‘beans’ extracted.</p>\n<p>Coffee beans vary in their shape, size, color as well as flavor depending on the region and conditions in which they were grown. The difference of aromas and flavors between various regional varietals is as vast as the regions they grow in. Just like the teas and wines of the world, and even more so. It is always worth trying new varietals that may stimulate your taste buds in a different way.</p>\n<p>The two major species of coffee are <em>Coffea arabica</em> and <em>Coffea canephora</em> (also called <em>Coffea robusta</em>).</p>\n<p>Arabica is believed to be the first species of coffee to have been cultivated.</p>\n<p>It requires more care during cultivation and is considered to produce better coffee than robusta. Arabica plants grow at high altitudes of around 1,000 to 2,000 meters, approximately 3,200 to 6,500 ft, above sea level in regions across South and Central America as well as Africa. Arabica is costlier to grow as it produces lower yields than Robusta despite requiring more labor. Despite all that, it is considered superior to robusta. The high demand and lower availability drives the price high. Arabica is the species most associated with specialty (sometimes referred to as gourmet) coffees.</p>\n<p>The only place where Arabica coffee grows indigenously is Ethiopia. It is the birthplace of coffee and also the only place in which it truly grows wild. All countries that produce Arabica coffees have transplanted plant stock directly from Ethiopia or from other countries that had already done so.</p>"
         
     | 
| 
       54 
54 
     | 
    
         
             
                    },
         
     | 
| 
       55 
55 
     | 
    
         
             
                    "related_articles": {
         
     | 
| 
       56 
56 
     | 
    
         
             
                      "type": "modular_content",
         
     | 
    
        data/lib/delivery/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: kontent-delivery-sdk-ruby
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.18
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Eric Dugre
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-12-08 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: dotenv
         
     | 
| 
         @@ -98,26 +98,26 @@ dependencies: 
     | 
|
| 
       98 
98 
     | 
    
         
             
                requirements:
         
     | 
| 
       99 
99 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       100 
100 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       101 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 101 
     | 
    
         
            +
                    version: '3.8'
         
     | 
| 
       102 
102 
     | 
    
         
             
              type: :development
         
     | 
| 
       103 
103 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       104 
104 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       105 
105 
     | 
    
         
             
                requirements:
         
     | 
| 
       106 
106 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       107 
107 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       108 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 108 
     | 
    
         
            +
                    version: '3.8'
         
     | 
| 
       109 
109 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       110 
110 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       111 
111 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       112 
112 
     | 
    
         
             
                requirements:
         
     | 
| 
       113 
     | 
    
         
            -
                - - " 
     | 
| 
      
 113 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       114 
114 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       115 
115 
     | 
    
         
             
                    version: 0.18.5
         
     | 
| 
       116 
116 
     | 
    
         
             
              type: :development
         
     | 
| 
       117 
117 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       118 
118 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       119 
119 
     | 
    
         
             
                requirements:
         
     | 
| 
       120 
     | 
    
         
            -
                - - " 
     | 
| 
      
 120 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       121 
121 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       122 
122 
     | 
    
         
             
                    version: 0.18.5
         
     | 
| 
       123 
123 
     | 
    
         
             
            description: Kentico Kontent Delivery SDK for Ruby
         
     | 
| 
         @@ -166,6 +166,8 @@ files: 
     | 
|
| 
       166 
166 
     | 
    
         
             
            - lib/delivery/tests/generic/items/about_us.json
         
     | 
| 
       167 
167 
     | 
    
         
             
            - lib/delivery/tests/generic/items/aeropress_filters.json
         
     | 
| 
       168 
168 
     | 
    
         
             
            - lib/delivery/tests/generic/items/coffee_processing_techniques.json
         
     | 
| 
      
 169 
     | 
    
         
            +
            - lib/delivery/tests/generic/items/empty_rich_text.json
         
     | 
| 
      
 170 
     | 
    
         
            +
            - lib/delivery/tests/generic/items/rich_text_complex_tables.json
         
     | 
| 
       169 
171 
     | 
    
         
             
            - lib/delivery/tests/generic/items/where_does_coffee_come_from_.json
         
     | 
| 
       170 
172 
     | 
    
         
             
            - lib/delivery/tests/generic/taxonomies.json
         
     | 
| 
       171 
173 
     | 
    
         
             
            - lib/delivery/tests/generic/types.json
         
     | 
| 
         @@ -198,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       198 
200 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       199 
201 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       200 
202 
     | 
    
         
             
            requirements: []
         
     | 
| 
       201 
     | 
    
         
            -
            rubygems_version: 3.1. 
     | 
| 
      
 203 
     | 
    
         
            +
            rubygems_version: 3.1.4
         
     | 
| 
       202 
204 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       203 
205 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       204 
206 
     | 
    
         
             
            summary: Kentico Kontent Delivery SDK for Ruby
         
     |