delivery-sdk-ruby 0.14.1 → 0.14.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c913795034972c715d77eaef5ef1d13c9a8615e4b6d87b9afcd4579fdd33795
4
- data.tar.gz: a345e35c29c7cea72ccd1b86f059fbe388d09b2bb5b187963ef90e852fc4f729
3
+ metadata.gz: b78db9a74f7389d472bbc2ccb4e2abba26285835999c09bbe4a01bf5886b371e
4
+ data.tar.gz: fd1c7b62a50e45245569d48e136252011d780186ff15d2e1a972f7b032c40fce
5
5
  SHA512:
6
- metadata.gz: 38e452048f7c53067e1b875dde68c1424c3bbda6f03f3cb613be48d04fbb431b81c8ce09931f467d616ed4fb5749d647f361afc0febbf30e3fa76f3f652f8639
7
- data.tar.gz: 463ba10303423bade0c59538b58795d469e48cc1213fe14e1004180bb367f3138c7e5cec10fd56cd30f6f1951196c5d8fc31a388e9bbbbc76982ac1bf867d73d
6
+ metadata.gz: 45395875e18f12f54946d5c0638b1fbe6f9ceec2f1b5e47e168d604e1e566be77ba83cfca69ce829e0ce258003148a6bf0decdd23e96a9d7967dc01fb509156f
7
+ data.tar.gz: 208f83cb6e927c857a37cd6a152cdecb58715eb9055248453410ff44b17ca603b82743c0785a7301c028e76d3337859af451c1d7af5459d507705c2d0bc6cb52
data/README.md CHANGED
@@ -1,9 +1,16 @@
1
- [![Join the chat at https://kentico-community.slack.com](https://img.shields.io/badge/join-slack-E6186D.svg)](https://kentico-community.slack.com) [![Version](https://img.shields.io/gem/v/delivery-sdk-ruby.svg?style=flat)](https://rubygems.org/gems/delivery-sdk-ruby)
1
+ [![Build Status](https://api.travis-ci.org/Kentico/delivery-sdk-ruby.svg?branch=master)](https://travis-ci.org/Kentico/delivery-sdk-ruby)
2
+ [![Join the chat at https://kentico-community.slack.com](https://img.shields.io/badge/join-slack-E6186D.svg)](https://kentico-community.slack.com)
3
+ [![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-ASK%20NOW-FE7A16.svg?logo=stackoverflow&logoColor=white)](https://stackoverflow.com/tags/kentico-cloud)
4
+ [![Version](https://img.shields.io/gem/v/delivery-sdk-ruby.svg?style=flat)](https://rubygems.org/gems/delivery-sdk-ruby)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/b2e3fae28a2b2601d815/maintainability)](https://codeclimate.com/github/Kentico/delivery-sdk-ruby/maintainability)
2
6
 
3
7
  # Delivery Ruby SDK
4
8
 
5
9
  The Delivery Ruby SDK can be used in Ruby/Rails projects to retrieve content from Kentico Cloud. This is a community project and not an official Kentico SDK. If you find a bug in the SDK or have a feature request, please submit a GitHub issue.
6
10
 
11
+ See [environment setup fo Windows](https://github.com/Kentico/delivery-sdk-ruby/wiki/How-to-setup-development-environment-on-Windows) for local development.
12
+
13
+
7
14
  ## Demo Rails application
8
15
 
9
16
  This repository contains a very basic Rails application that you can run locally to see how the SDK can be used. To run the Dancing Goat demo application, clone this repository and open `/dancing_goat/app/controllers/application_controller.rb`. Add your project ID to the file here:
@@ -13,4 +13,5 @@ require File.dirname(__FILE__) + '/delivery/responses/delivery_taxonomy_response
13
13
  require File.dirname(__FILE__) + '/delivery/responses/delivery_element_response'
14
14
  require File.dirname(__FILE__) + '/delivery/resolvers/content_link_resolver'
15
15
  require File.dirname(__FILE__) + '/delivery/resolvers/inline_content_item_resolver'
16
+ require File.dirname(__FILE__) + '/delivery/resolvers/linked_item_resolver'
16
17
  require File.dirname(__FILE__) + '/delivery/builders/image_transformation_builder'
@@ -23,21 +23,14 @@ module Delivery
23
23
  )
24
24
  end
25
25
 
26
- def initialize(source, content_link_url_resolver, inline_content_item_resolver, modular_content = nil)
26
+ def initialize(source, content_link_url_resolver, inline_content_item_resolver, linked_items_resolver)
27
27
  @source =
28
28
  if source['item'].nil?
29
29
  source
30
30
  else
31
31
  source['item']
32
32
  end
33
- # Multiple item responses have modular_content on the root, single item
34
- # responses have modular content in the item
35
- @modular_content =
36
- if modular_content.nil?
37
- source['modular_content']
38
- else
39
- modular_content
40
- end
33
+ @linked_items_resolver = linked_items_resolver
41
34
  self.content_link_url_resolver = content_link_url_resolver
42
35
  self.inline_content_item_resolver = inline_content_item_resolver
43
36
  end
@@ -64,16 +57,14 @@ module Delivery
64
57
  # element with items from request's modular_content
65
58
  def get_links(code_name)
66
59
  element = get_element code_name
67
- filtered = filter_modular_content element['value']
68
- filtered.map { |n| ContentItem.new JSON.parse(JSON.generate(n)), content_link_url_resolver, inline_content_item_resolver }
60
+ get_linked_items element['value']
69
61
  end
70
62
 
71
63
  # Returns an array of ContentItems by comparing code names stored in the
72
64
  # modular_content object with items from request's modular_content
73
65
  def get_inline_items(code_name)
74
66
  element = get_element code_name
75
- filtered = filter_modular_content element['modular_content']
76
- filtered.map { |n| ContentItem.new JSON.parse(JSON.generate(n)), content_link_url_resolver, inline_content_item_resolver }
67
+ get_linked_items element['modular_content']
77
68
  end
78
69
 
79
70
  private
@@ -93,11 +84,11 @@ module Delivery
93
84
  @source['elements'][code_name]
94
85
  end
95
86
 
96
- def filter_modular_content(codenames)
87
+ def get_linked_items(codenames)
97
88
  return [] unless codenames.class == Array
98
89
 
99
90
  codenames.each_with_object([]) do |codename, items|
100
- item = @modular_content.values.find { |i| i['system']['codename'] == codename }
91
+ item = @linked_items_resolver.resolve codename
101
92
  items << item if item
102
93
  end
103
94
  end
@@ -0,0 +1,28 @@
1
+ module Delivery
2
+ # Resolves a content item by its codename
3
+ # It contains the modular content of item/items response
4
+ class LinkedItemResolver
5
+ def initialize(modular_content, content_link_url_resolver, inline_content_item_resolver)
6
+ @modular_content = modular_content
7
+ @content_link_url_resolver = content_link_url_resolver
8
+ @inline_content_item_resolver = inline_content_item_resolver
9
+ @resolved_items = {}
10
+ end
11
+
12
+ # Resolves a content item
13
+ # If the link for a codename was resolved before,
14
+ # it returns the same instance of Content Item
15
+ # @param [String] codename Codename of the content item
16
+ # @return [ContentItem]
17
+ def resolve(codename)
18
+ @resolved_items[codename] ||= resolve_item(codename)
19
+ end
20
+
21
+ private
22
+
23
+ def resolve_item(codename)
24
+ item = @modular_content.values.find { |i| i['system']['codename'] == codename }
25
+ ContentItem.new JSON.parse(JSON.generate(item)), @content_link_url_resolver, @inline_content_item_resolver, self
26
+ end
27
+ end
28
+ end
@@ -13,13 +13,14 @@ module Delivery
13
13
 
14
14
  def items
15
15
  @items unless @items.nil?
16
+ linked_items_resolver = LinkedItemResolver.new @response['modular_content'], @content_link_url_resolver, @inline_content_item_resolver
16
17
  items = []
17
18
  @response['items'].each do |n|
18
19
  items << Delivery::ContentItem.new(
19
20
  n,
20
21
  @content_link_url_resolver,
21
22
  @inline_content_item_resolver,
22
- @response['modular_content']
23
+ linked_items_resolver
23
24
  )
24
25
  end
25
26
  @items = items
@@ -7,10 +7,12 @@ module Delivery
7
7
  class DeliveryItemResponse < ResponseBase
8
8
  def item
9
9
  @item unless @item.nil?
10
+ linked_items_resolver = LinkedItemResolver.new @response['modular_content'], @content_link_url_resolver, @inline_content_item_resolver
10
11
  @item = Delivery::ContentItem.new(
11
12
  @response,
12
13
  @content_link_url_resolver,
13
- @inline_content_item_resolver
14
+ @inline_content_item_resolver,
15
+ linked_items_resolver
14
16
  )
15
17
  end
16
18
 
@@ -1,3 +1,3 @@
1
1
  module Delivery
2
- VERSION = '0.14.1'.freeze
2
+ VERSION = '0.14.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delivery-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Dugre
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-28 00:00:00.000000000 Z
11
+ date: 2019-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -50,6 +50,20 @@ dependencies:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 2.1.0.rc1
53
+ - !ruby/object:Gem::Dependency
54
+ name: dotenv
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 2.7.0
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 2.7.0
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: bundler
55
69
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +131,7 @@ files:
117
131
  - lib/delivery/query_parameters/query_string.rb
118
132
  - lib/delivery/resolvers/content_link_resolver.rb
119
133
  - lib/delivery/resolvers/inline_content_item_resolver.rb
134
+ - lib/delivery/resolvers/linked_item_resolver.rb
120
135
  - lib/delivery/responses/delivery_element_response.rb
121
136
  - lib/delivery/responses/delivery_item_listing_response.rb
122
137
  - lib/delivery/responses/delivery_item_response.rb