almodovar 1.5.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/almodovar/single_resource.rb +31 -18
- data/lib/almodovar/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0070e4a31dadf08f8c1c4419f1cf9adaae3cfb3
|
4
|
+
data.tar.gz: e7749dc727492f4362a89d9f7e8f374c336b4a28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d368d1b28e8e011828ccaf01fa735facb74f012323b799c3b24c74baee7b6278606bc3689678b353c732b62d556a43ae1c8b2862eb517190c5019de61f1ed04
|
7
|
+
data.tar.gz: d8306c513cd1a59226374c935b2a34e4d0df44ca556082fe01963cb683ad7f7be6f257447d4678f3710b9d5d89846f42208e91ec802e5766e04cbdeff33694df
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module Almodovar
|
2
2
|
class SingleResource
|
3
3
|
include HttpAccessor
|
4
|
-
|
4
|
+
|
5
5
|
undef_method :id if instance_methods.include?("id")
|
6
6
|
undef_method :type if instance_methods.include?("type")
|
7
|
-
|
7
|
+
|
8
8
|
def initialize(url, auth, xml = nil, options = {})
|
9
9
|
@url = url
|
10
10
|
@auth = auth
|
11
11
|
@xml = xml
|
12
12
|
@options = options
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def update(attrs = {})
|
16
16
|
raise ArgumentError.new("You must specify one only root element which is the type of resource (e.g. `:project => { :name => 'Wadus' }` instead of just `:name => 'Wadus'`)") if attrs.size > 1
|
17
17
|
root, body = attrs.first
|
@@ -19,48 +19,61 @@ module Almodovar
|
|
19
19
|
check_errors(response, @url)
|
20
20
|
@xml = Nokogiri::XML.parse(response.body).root
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def delete
|
24
24
|
check_errors(http.delete(@url), @url)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def url
|
28
28
|
@url ||= xml.at_xpath("./link[@rel='self']").try(:[], "href")
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
|
+
def to_hash
|
32
|
+
xml_without_type = xml.dup.tap do |xml|
|
33
|
+
xml.delete("type")
|
34
|
+
end
|
35
|
+
|
36
|
+
if xml_without_type.content.strip.empty?
|
37
|
+
{}
|
38
|
+
else
|
39
|
+
xml_hash = Hash.from_xml(xml_without_type.to_s)
|
40
|
+
xml_hash[xml_without_type.name]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
31
44
|
delegate :to_xml, :to => :xml
|
32
45
|
alias_method :inspect, :to_xml
|
33
|
-
|
46
|
+
|
34
47
|
def [](key) # for resources with type "document"
|
35
48
|
return super unless xml.at_xpath("/*[@type='document']")
|
36
49
|
Hash.from_xml(xml.to_xml).values.first[key]
|
37
50
|
end
|
38
|
-
|
51
|
+
|
39
52
|
def respond_to?(meth, include_all=false)
|
40
53
|
super || (node(meth) != nil) || (link(meth) != nil)
|
41
54
|
end
|
42
|
-
|
55
|
+
|
43
56
|
private
|
44
|
-
|
57
|
+
|
45
58
|
def method_missing(meth, *args, &blk)
|
46
59
|
if node = node(meth)
|
47
60
|
return node['type'] == 'document' ? Resource.from_xml(node.to_xml) : node_text(node)
|
48
61
|
end
|
49
|
-
|
62
|
+
|
50
63
|
link = link(meth)
|
51
64
|
return Resource.new(link["href"], @auth, link.at_xpath("./*"), *args) if link
|
52
|
-
|
65
|
+
|
53
66
|
super
|
54
67
|
end
|
55
|
-
|
68
|
+
|
56
69
|
def node(name)
|
57
70
|
xml.at_xpath("./*[name()='#{name}' or name()='#{attribute_name(name)}']")
|
58
71
|
end
|
59
|
-
|
72
|
+
|
60
73
|
def link(name)
|
61
74
|
xml.at_xpath("./link[@rel='#{name}' or @rel='#{attribute_name(name)}']")
|
62
75
|
end
|
63
|
-
|
76
|
+
|
64
77
|
def node_text(node)
|
65
78
|
case node['type']
|
66
79
|
when "integer"
|
@@ -75,10 +88,10 @@ module Almodovar
|
|
75
88
|
node.text
|
76
89
|
end
|
77
90
|
end
|
78
|
-
|
91
|
+
|
79
92
|
def attribute_name(attribute)
|
80
93
|
attribute.to_s.gsub('_', '-')
|
81
94
|
end
|
82
|
-
|
95
|
+
|
83
96
|
end
|
84
|
-
end
|
97
|
+
end
|
data/lib/almodovar/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: almodovar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BeBanjo S.L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
136
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.5
|
137
|
+
rubygems_version: 2.4.5
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: BeBanjo API client
|