dato 0.6.3.beta → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|