delivery-sdk-ruby 0.14.13 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.md +21 -21
- data/README.md +461 -461
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/lib/delivery-sdk-ruby.rb +17 -17
- data/lib/delivery/builders/image_transformation_builder.rb +141 -141
- data/lib/delivery/builders/url_builder.rb +73 -73
- data/lib/delivery/client/delivery_client.rb +85 -85
- data/lib/delivery/client/delivery_query.rb +188 -183
- data/lib/delivery/models/content_item.rb +96 -96
- data/lib/delivery/models/content_type.rb +26 -26
- data/lib/delivery/models/pagination.rb +13 -13
- data/lib/delivery/models/taxonomy_group.rb +24 -24
- data/lib/delivery/query_parameters/filters.rb +87 -87
- data/lib/delivery/query_parameters/parameter_base.rb +30 -30
- data/lib/delivery/query_parameters/query_string.rb +49 -49
- data/lib/delivery/resolvers/content_link_resolver.rb +62 -62
- data/lib/delivery/resolvers/inline_content_item_resolver.rb +50 -50
- data/lib/delivery/resolvers/linked_item_resolver.rb +27 -27
- data/lib/delivery/responses/delivery_element_response.rb +23 -23
- data/lib/delivery/responses/delivery_item_listing_response.rb +39 -39
- data/lib/delivery/responses/delivery_item_response.rb +29 -29
- data/lib/delivery/responses/delivery_taxonomy_listing_response.rb +32 -32
- data/lib/delivery/responses/delivery_taxonomy_response.rb +22 -22
- data/lib/delivery/responses/delivery_type_listing_response.rb +31 -31
- data/lib/delivery/responses/delivery_type_response.rb +21 -21
- data/lib/delivery/responses/response_base.rb +20 -20
- data/lib/delivery/version.rb +3 -3
- metadata +13 -12
@@ -1,96 +1,96 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'nokogiri'
|
3
|
-
|
4
|
-
module Delivery
|
5
|
-
# JSON data of a content item parsed as OpenStruct objects for dynamic use
|
6
|
-
class ContentItem
|
7
|
-
attr_accessor :content_link_url_resolver,
|
8
|
-
:inline_content_item_resolver
|
9
|
-
|
10
|
-
def elements
|
11
|
-
@elements unless @elements.nil?
|
12
|
-
@elements = JSON.parse(
|
13
|
-
JSON.generate(@source['elements']),
|
14
|
-
object_class: OpenStruct
|
15
|
-
)
|
16
|
-
end
|
17
|
-
|
18
|
-
def system
|
19
|
-
@system unless @system.nil?
|
20
|
-
@system = JSON.parse(
|
21
|
-
JSON.generate(@source['system']),
|
22
|
-
object_class: OpenStruct
|
23
|
-
)
|
24
|
-
end
|
25
|
-
|
26
|
-
def initialize(source, content_link_url_resolver, inline_content_item_resolver, linked_items_resolver)
|
27
|
-
@source =
|
28
|
-
if source['item'].nil?
|
29
|
-
source
|
30
|
-
else
|
31
|
-
source['item']
|
32
|
-
end
|
33
|
-
@linked_items_resolver = linked_items_resolver
|
34
|
-
self.content_link_url_resolver = content_link_url_resolver
|
35
|
-
self.inline_content_item_resolver = inline_content_item_resolver
|
36
|
-
end
|
37
|
-
|
38
|
-
def get_string(code_name)
|
39
|
-
element = get_element code_name
|
40
|
-
content = element['value']
|
41
|
-
|
42
|
-
if element['type'] == 'rich_text'
|
43
|
-
content = content_link_url_resolver.resolve content, element['links'] if should_resolve_links element
|
44
|
-
inline_items = get_inline_items code_name
|
45
|
-
content = inline_content_item_resolver.resolve content, inline_items if should_resolve_inline_content element
|
46
|
-
end
|
47
|
-
content.to_s
|
48
|
-
end
|
49
|
-
|
50
|
-
# Returns an array of assets inserted into the specified element
|
51
|
-
def get_assets(code_name)
|
52
|
-
element = get_element code_name
|
53
|
-
element['value'].map { |n| OpenStruct.new(n) }
|
54
|
-
end
|
55
|
-
|
56
|
-
# Returns an array of ContentItems by comparing code names stored in the
|
57
|
-
# element with items from request's modular_content
|
58
|
-
def get_links(code_name)
|
59
|
-
element = get_element code_name
|
60
|
-
get_linked_items element['value']
|
61
|
-
end
|
62
|
-
|
63
|
-
# Returns an array of ContentItems by comparing code names stored in the
|
64
|
-
# modular_content object with items from request's modular_content
|
65
|
-
def get_inline_items(code_name)
|
66
|
-
element = get_element code_name
|
67
|
-
get_linked_items element['modular_content']
|
68
|
-
end
|
69
|
-
|
70
|
-
private
|
71
|
-
|
72
|
-
def should_resolve_links(element)
|
73
|
-
!element['links'].nil? && !content_link_url_resolver.nil?
|
74
|
-
end
|
75
|
-
|
76
|
-
def should_resolve_inline_content(element)
|
77
|
-
!element['modular_content'].nil? && !inline_content_item_resolver.nil?
|
78
|
-
end
|
79
|
-
|
80
|
-
def get_element(code_name)
|
81
|
-
raise ArgumentError, "Argument 'code_name' cannot be null" if code_name.nil?
|
82
|
-
raise ArgumentError, "Argument 'code_name' is not a string" unless code_name.is_a? String
|
83
|
-
|
84
|
-
@source['elements'][code_name]
|
85
|
-
end
|
86
|
-
|
87
|
-
def get_linked_items(codenames)
|
88
|
-
return [] unless codenames.class == Array
|
89
|
-
|
90
|
-
codenames.each_with_object([]) do |codename, items|
|
91
|
-
item = @linked_items_resolver.resolve codename
|
92
|
-
items << item if item
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
1
|
+
require 'ostruct'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
module Delivery
|
5
|
+
# JSON data of a content item parsed as OpenStruct objects for dynamic use
|
6
|
+
class ContentItem
|
7
|
+
attr_accessor :content_link_url_resolver,
|
8
|
+
:inline_content_item_resolver
|
9
|
+
|
10
|
+
def elements
|
11
|
+
@elements unless @elements.nil?
|
12
|
+
@elements = JSON.parse(
|
13
|
+
JSON.generate(@source['elements']),
|
14
|
+
object_class: OpenStruct
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
def system
|
19
|
+
@system unless @system.nil?
|
20
|
+
@system = JSON.parse(
|
21
|
+
JSON.generate(@source['system']),
|
22
|
+
object_class: OpenStruct
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def initialize(source, content_link_url_resolver, inline_content_item_resolver, linked_items_resolver)
|
27
|
+
@source =
|
28
|
+
if source['item'].nil?
|
29
|
+
source
|
30
|
+
else
|
31
|
+
source['item']
|
32
|
+
end
|
33
|
+
@linked_items_resolver = linked_items_resolver
|
34
|
+
self.content_link_url_resolver = content_link_url_resolver
|
35
|
+
self.inline_content_item_resolver = inline_content_item_resolver
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_string(code_name)
|
39
|
+
element = get_element code_name
|
40
|
+
content = element['value']
|
41
|
+
|
42
|
+
if element['type'] == 'rich_text'
|
43
|
+
content = content_link_url_resolver.resolve content, element['links'] if should_resolve_links element
|
44
|
+
inline_items = get_inline_items code_name
|
45
|
+
content = inline_content_item_resolver.resolve content, inline_items if should_resolve_inline_content element
|
46
|
+
end
|
47
|
+
content.to_s
|
48
|
+
end
|
49
|
+
|
50
|
+
# Returns an array of assets inserted into the specified element
|
51
|
+
def get_assets(code_name)
|
52
|
+
element = get_element code_name
|
53
|
+
element['value'].map { |n| OpenStruct.new(n) }
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns an array of ContentItems by comparing code names stored in the
|
57
|
+
# element with items from request's modular_content
|
58
|
+
def get_links(code_name)
|
59
|
+
element = get_element code_name
|
60
|
+
get_linked_items element['value']
|
61
|
+
end
|
62
|
+
|
63
|
+
# Returns an array of ContentItems by comparing code names stored in the
|
64
|
+
# modular_content object with items from request's modular_content
|
65
|
+
def get_inline_items(code_name)
|
66
|
+
element = get_element code_name
|
67
|
+
get_linked_items element['modular_content']
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def should_resolve_links(element)
|
73
|
+
!element['links'].nil? && !content_link_url_resolver.nil?
|
74
|
+
end
|
75
|
+
|
76
|
+
def should_resolve_inline_content(element)
|
77
|
+
!element['modular_content'].nil? && !inline_content_item_resolver.nil?
|
78
|
+
end
|
79
|
+
|
80
|
+
def get_element(code_name)
|
81
|
+
raise ArgumentError, "Argument 'code_name' cannot be null" if code_name.nil?
|
82
|
+
raise ArgumentError, "Argument 'code_name' is not a string" unless code_name.is_a? String
|
83
|
+
|
84
|
+
@source['elements'][code_name]
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_linked_items(codenames)
|
88
|
+
return [] unless codenames.class == Array
|
89
|
+
|
90
|
+
codenames.each_with_object([]) do |codename, items|
|
91
|
+
item = @linked_items_resolver.resolve codename
|
92
|
+
items << item if item
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
|
-
module Delivery
|
4
|
-
# JSON data of a content type parsed as OpenStruct objects for dynamic use
|
5
|
-
class ContentType
|
6
|
-
def elements
|
7
|
-
@elements unless @elements.nil?
|
8
|
-
@elements = JSON.parse(
|
9
|
-
JSON.generate(@source['elements']),
|
10
|
-
object_class: OpenStruct
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
def system
|
15
|
-
@system unless @system.nil?
|
16
|
-
@system = JSON.parse(
|
17
|
-
JSON.generate(@source['system']),
|
18
|
-
object_class: OpenStruct
|
19
|
-
)
|
20
|
-
end
|
21
|
-
|
22
|
-
def initialize(source)
|
23
|
-
@source = source
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Delivery
|
4
|
+
# JSON data of a content type parsed as OpenStruct objects for dynamic use
|
5
|
+
class ContentType
|
6
|
+
def elements
|
7
|
+
@elements unless @elements.nil?
|
8
|
+
@elements = JSON.parse(
|
9
|
+
JSON.generate(@source['elements']),
|
10
|
+
object_class: OpenStruct
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
def system
|
15
|
+
@system unless @system.nil?
|
16
|
+
@system = JSON.parse(
|
17
|
+
JSON.generate(@source['system']),
|
18
|
+
object_class: OpenStruct
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(source)
|
23
|
+
@source = source
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
module Delivery
|
2
|
-
# Holds pagination data from a DeliveryItemListingResponse
|
3
|
-
class Pagination
|
4
|
-
attr_accessor :skip, :limit, :count, :next_page
|
5
|
-
|
6
|
-
def initialize(json)
|
7
|
-
self.skip = json['skip']
|
8
|
-
self.limit = json['limit']
|
9
|
-
self.count = json['count']
|
10
|
-
self.next_page = json['next_page']
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
module Delivery
|
2
|
+
# Holds pagination data from a DeliveryItemListingResponse
|
3
|
+
class Pagination
|
4
|
+
attr_accessor :skip, :limit, :count, :next_page
|
5
|
+
|
6
|
+
def initialize(json)
|
7
|
+
self.skip = json['skip']
|
8
|
+
self.limit = json['limit']
|
9
|
+
self.count = json['count']
|
10
|
+
self.next_page = json['next_page']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,24 +1,24 @@
|
|
1
|
-
module Delivery
|
2
|
-
# JSON data of a taxonomy group parsed as OpenStruct objects for dynamic use
|
3
|
-
class TaxonomyGroup
|
4
|
-
def terms
|
5
|
-
@terms unless @terms.nil?
|
6
|
-
@terms = JSON.parse(
|
7
|
-
JSON.generate(@source['terms']),
|
8
|
-
object_class: OpenStruct
|
9
|
-
)
|
10
|
-
end
|
11
|
-
|
12
|
-
def system
|
13
|
-
@system unless @system.nil?
|
14
|
-
@system = JSON.parse(
|
15
|
-
JSON.generate(@source['system']),
|
16
|
-
object_class: OpenStruct
|
17
|
-
)
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(source)
|
21
|
-
@source = source
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
1
|
+
module Delivery
|
2
|
+
# JSON data of a taxonomy group parsed as OpenStruct objects for dynamic use
|
3
|
+
class TaxonomyGroup
|
4
|
+
def terms
|
5
|
+
@terms unless @terms.nil?
|
6
|
+
@terms = JSON.parse(
|
7
|
+
JSON.generate(@source['terms']),
|
8
|
+
object_class: OpenStruct
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
def system
|
13
|
+
@system unless @system.nil?
|
14
|
+
@system = JSON.parse(
|
15
|
+
JSON.generate(@source['system']),
|
16
|
+
object_class: OpenStruct
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(source)
|
21
|
+
@source = source
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,87 +1,87 @@
|
|
1
|
-
require 'delivery/query_parameters/parameter_base'
|
2
|
-
|
3
|
-
module Delivery
|
4
|
-
module QueryParameters
|
5
|
-
# Provides the base class for filter implementations.
|
6
|
-
class Filter < ParameterBase
|
7
|
-
def initialize(key, operator, values)
|
8
|
-
super(key, operator, values)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# Extend String class to allow semantic typing of filters
|
15
|
-
class String
|
16
|
-
# Represents a filter that matches a content item if the specified content
|
17
|
-
# element or system attribute has a value that contains all the specified
|
18
|
-
# values. This filter is applicable to array values only, such as sitemap
|
19
|
-
# location or value of Linked Items, Taxonomy and Multiple choice content elements.
|
20
|
-
def all(*args)
|
21
|
-
Delivery::QueryParameters::Filter.new(self, '[all]', *args)
|
22
|
-
end
|
23
|
-
|
24
|
-
# Represents a filter that matches a content item if the specified content
|
25
|
-
# element or system attribute has a value that contains any the specified
|
26
|
-
# values. This filter is applicable to array values only, such as sitemap
|
27
|
-
# location or value of Linked Items, Taxonomy and Multiple choice content elements.
|
28
|
-
def any(*args)
|
29
|
-
Delivery::QueryParameters::Filter.new(self, '[any]', *args)
|
30
|
-
end
|
31
|
-
|
32
|
-
# Represents a filter that matches a content item if the specified content element
|
33
|
-
# or system attribute has a value that contains the specified value.
|
34
|
-
# This filter is applicable to array values only, such as sitemap location or value
|
35
|
-
# of Linked Items, Taxonomy and Multiple choice content elements.
|
36
|
-
def contains(*args)
|
37
|
-
Delivery::QueryParameters::Filter.new(self, '[contains]', *args)
|
38
|
-
end
|
39
|
-
|
40
|
-
# Represents a filter that matches a content item if the specified
|
41
|
-
# content element or system attribute has the specified value.
|
42
|
-
def eq(*args)
|
43
|
-
Delivery::QueryParameters::Filter.new(self, '', *args)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Represents a filter that matches a content item if the specified content
|
47
|
-
# element or system attribute has a value that is greater than the
|
48
|
-
# specified value.
|
49
|
-
def gt(*args)
|
50
|
-
Delivery::QueryParameters::Filter.new(self, '[gt]', *args)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Represents a filter that matches a content item if the specified content
|
54
|
-
# element or system attribute has a value that is greater than or equal to
|
55
|
-
# the specified value.
|
56
|
-
def gt_or_eq(*args)
|
57
|
-
Delivery::QueryParameters::Filter.new(self, '[gte]', *args)
|
58
|
-
end
|
59
|
-
|
60
|
-
# Represents a filter that matches a content item if the specified
|
61
|
-
# content element or system attribute has a value that matches a
|
62
|
-
# value in the specified list.
|
63
|
-
def in(*args)
|
64
|
-
Delivery::QueryParameters::Filter.new(self, '[in]', *args)
|
65
|
-
end
|
66
|
-
|
67
|
-
# Represents a filter that matches a content item if the specified content
|
68
|
-
# element or system attribute has a value that is less than the
|
69
|
-
# specified value.
|
70
|
-
def lt(*args)
|
71
|
-
Delivery::QueryParameters::Filter.new(self, '[lt]', *args)
|
72
|
-
end
|
73
|
-
|
74
|
-
# Represents a filter that matches a content item if the specified content
|
75
|
-
# element or system attribute has a value that is less than or equal to
|
76
|
-
# the specified value.
|
77
|
-
def lt_or_eq(*args)
|
78
|
-
Delivery::QueryParameters::Filter.new(self, '[lte]', *args)
|
79
|
-
end
|
80
|
-
|
81
|
-
# Represents a filter that matches a content item if the specified
|
82
|
-
# content element or system attribute has a value that falls within
|
83
|
-
# the specified range of values (both inclusive).
|
84
|
-
def range(*args)
|
85
|
-
Delivery::QueryParameters::Filter.new(self, '[range]', *args)
|
86
|
-
end
|
87
|
-
end
|
1
|
+
require 'delivery/query_parameters/parameter_base'
|
2
|
+
|
3
|
+
module Delivery
|
4
|
+
module QueryParameters
|
5
|
+
# Provides the base class for filter implementations.
|
6
|
+
class Filter < ParameterBase
|
7
|
+
def initialize(key, operator, values)
|
8
|
+
super(key, operator, values)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Extend String class to allow semantic typing of filters
|
15
|
+
class String
|
16
|
+
# Represents a filter that matches a content item if the specified content
|
17
|
+
# element or system attribute has a value that contains all the specified
|
18
|
+
# values. This filter is applicable to array values only, such as sitemap
|
19
|
+
# location or value of Linked Items, Taxonomy and Multiple choice content elements.
|
20
|
+
def all(*args)
|
21
|
+
Delivery::QueryParameters::Filter.new(self, '[all]', *args)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Represents a filter that matches a content item if the specified content
|
25
|
+
# element or system attribute has a value that contains any the specified
|
26
|
+
# values. This filter is applicable to array values only, such as sitemap
|
27
|
+
# location or value of Linked Items, Taxonomy and Multiple choice content elements.
|
28
|
+
def any(*args)
|
29
|
+
Delivery::QueryParameters::Filter.new(self, '[any]', *args)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Represents a filter that matches a content item if the specified content element
|
33
|
+
# or system attribute has a value that contains the specified value.
|
34
|
+
# This filter is applicable to array values only, such as sitemap location or value
|
35
|
+
# of Linked Items, Taxonomy and Multiple choice content elements.
|
36
|
+
def contains(*args)
|
37
|
+
Delivery::QueryParameters::Filter.new(self, '[contains]', *args)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Represents a filter that matches a content item if the specified
|
41
|
+
# content element or system attribute has the specified value.
|
42
|
+
def eq(*args)
|
43
|
+
Delivery::QueryParameters::Filter.new(self, '', *args)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Represents a filter that matches a content item if the specified content
|
47
|
+
# element or system attribute has a value that is greater than the
|
48
|
+
# specified value.
|
49
|
+
def gt(*args)
|
50
|
+
Delivery::QueryParameters::Filter.new(self, '[gt]', *args)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Represents a filter that matches a content item if the specified content
|
54
|
+
# element or system attribute has a value that is greater than or equal to
|
55
|
+
# the specified value.
|
56
|
+
def gt_or_eq(*args)
|
57
|
+
Delivery::QueryParameters::Filter.new(self, '[gte]', *args)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Represents a filter that matches a content item if the specified
|
61
|
+
# content element or system attribute has a value that matches a
|
62
|
+
# value in the specified list.
|
63
|
+
def in(*args)
|
64
|
+
Delivery::QueryParameters::Filter.new(self, '[in]', *args)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Represents a filter that matches a content item if the specified content
|
68
|
+
# element or system attribute has a value that is less than the
|
69
|
+
# specified value.
|
70
|
+
def lt(*args)
|
71
|
+
Delivery::QueryParameters::Filter.new(self, '[lt]', *args)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Represents a filter that matches a content item if the specified content
|
75
|
+
# element or system attribute has a value that is less than or equal to
|
76
|
+
# the specified value.
|
77
|
+
def lt_or_eq(*args)
|
78
|
+
Delivery::QueryParameters::Filter.new(self, '[lte]', *args)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Represents a filter that matches a content item if the specified
|
82
|
+
# content element or system attribute has a value that falls within
|
83
|
+
# the specified range of values (both inclusive).
|
84
|
+
def range(*args)
|
85
|
+
Delivery::QueryParameters::Filter.new(self, '[range]', *args)
|
86
|
+
end
|
87
|
+
end
|