dato 0.6.3.beta → 0.6.3
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/lib/dato/api_client.rb +4 -7
- data/lib/dato/json_api_serializer.rb +19 -6
- data/lib/dato/repo.rb +5 -3
- data/lib/dato/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caf533c45c36a3d0ab706de24d87eb9644c6d75cd96fd382548f2e33669c116a
|
4
|
+
data.tar.gz: 5ac31c58ab266710d4a7cd01d77b1c0a72557028cf3db98a0b97582274812eed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 301ec61a7fc330eacb9b158ed4171d002dd5cf751155acfc8b8229dabe06160c507a600b47e64f519109dff95e02fc4509f132c6e13728afcaf9866b4d08c01c
|
7
|
+
data.tar.gz: d4e17fac97b98ed6d6b3e5e37613702943db6518a0b25ea8773b61b9607c73c8c88da2e1a43e23d0ee01ed0c6bf4eec24cda45fb31a756d2b116f31a27b71b03
|
data/lib/dato/api_client.rb
CHANGED
@@ -37,15 +37,12 @@ module Dato
|
|
37
37
|
|
38
38
|
schema.definitions.each do |type, schema|
|
39
39
|
is_collection = schema.links.select{|x| x.rel === "instances"}.any?
|
40
|
+
namespace = is_collection ? type.pluralize : type
|
40
41
|
|
41
|
-
|
42
|
-
type = type.pluralize
|
43
|
-
end
|
44
|
-
|
45
|
-
define_method(type) do
|
42
|
+
define_method(namespace) do
|
46
43
|
instance_variable_set(
|
47
|
-
"@#{
|
48
|
-
instance_variable_get("@#{
|
44
|
+
"@#{namespace}",
|
45
|
+
instance_variable_get("@#{namespace}") ||
|
49
46
|
Dato::Repo.new(self, type, schema)
|
50
47
|
)
|
51
48
|
end
|
@@ -44,6 +44,7 @@ module Dato
|
|
44
44
|
relationships.each do |relationship, meta|
|
45
45
|
if resource.key? relationship
|
46
46
|
value = resource[relationship]
|
47
|
+
|
47
48
|
data = if value
|
48
49
|
if meta[:collection]
|
49
50
|
value.map do |id|
|
@@ -65,7 +66,15 @@ module Dato
|
|
65
66
|
|
66
67
|
def attributes(resource)
|
67
68
|
if type == "item"
|
68
|
-
resource.keys - [
|
69
|
+
return resource.keys.map(&:to_sym) - [
|
70
|
+
:item_type,
|
71
|
+
:id,
|
72
|
+
:created_at,
|
73
|
+
:updated_at,
|
74
|
+
:is_valid,
|
75
|
+
:published_version,
|
76
|
+
:current_version
|
77
|
+
]
|
69
78
|
end
|
70
79
|
|
71
80
|
link_attributes["properties"].keys.map(&:to_sym)
|
@@ -73,7 +82,7 @@ module Dato
|
|
73
82
|
|
74
83
|
def required_attributes
|
75
84
|
if type == "item"
|
76
|
-
[]
|
85
|
+
return []
|
77
86
|
end
|
78
87
|
|
79
88
|
(link_attributes.required || []).map(&:to_sym)
|
@@ -81,9 +90,11 @@ module Dato
|
|
81
90
|
|
82
91
|
def relationships
|
83
92
|
if type == "item"
|
84
|
-
|
85
|
-
item_type: { collection: false, type: 'item_type' }
|
86
|
-
|
93
|
+
if link.rel == :create
|
94
|
+
return { item_type: { collection: false, type: 'item_type' } }
|
95
|
+
else
|
96
|
+
{}
|
97
|
+
end
|
87
98
|
end
|
88
99
|
|
89
100
|
if !link_relationships
|
@@ -110,12 +121,14 @@ module Dato
|
|
110
121
|
collection: is_collection,
|
111
122
|
type: type,
|
112
123
|
}
|
124
|
+
|
125
|
+
acc
|
113
126
|
end
|
114
127
|
end
|
115
128
|
|
116
129
|
def required_relationships
|
117
130
|
if type == "item"
|
118
|
-
%i(item_type)
|
131
|
+
return %i(item_type)
|
119
132
|
end
|
120
133
|
|
121
134
|
(link_relationships.required || []).map(&:to_sym)
|
data/lib/dato/repo.rb
CHANGED
@@ -33,10 +33,12 @@ module Dato
|
|
33
33
|
"wrong number of arguments (given #{args.size}, expected #{min_arguments_count})"
|
34
34
|
)
|
35
35
|
|
36
|
-
|
36
|
+
placeholders = []
|
37
37
|
|
38
38
|
url = link["href"].gsub(IDENTITY_REGEXP) do |_stuff|
|
39
|
-
|
39
|
+
placeholder = args.shift.to_s
|
40
|
+
placeholders << placeholder
|
41
|
+
placeholder
|
40
42
|
end
|
41
43
|
|
42
44
|
response = if %i(post put).include?(link.method)
|
@@ -45,7 +47,7 @@ module Dato
|
|
45
47
|
|
46
48
|
JsonApiSerializer.new(type, link).serialize(
|
47
49
|
unserialized_body,
|
48
|
-
|
50
|
+
link.method == :post ? nil : placeholders.last
|
49
51
|
)
|
50
52
|
else
|
51
53
|
{}
|
data/lib/dato/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dato
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.3
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefano Verna
|
@@ -455,9 +455,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
455
455
|
version: '0'
|
456
456
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
457
457
|
requirements:
|
458
|
-
- - "
|
458
|
+
- - ">="
|
459
459
|
- !ruby/object:Gem::Version
|
460
|
-
version:
|
460
|
+
version: '0'
|
461
461
|
requirements: []
|
462
462
|
rubyforge_project:
|
463
463
|
rubygems_version: 2.7.6
|