Class: Springnote::Resource
Constant Summary
collapse
- XML =
'application/xml'
Instance Attribute Summary collapse
#url
Class Method Summary
collapse
-
.build(hsh, holder) ⇒ Object
-
.collection_url(holder, params = {}) ⇒ Object
-
.element_url(holder, id, params = {}) ⇒ Object
-
.find(*args) ⇒ Object
-
.find_all(holder) ⇒ Object
-
.find_multi(holder, params = {}) ⇒ Object
-
.find_one(id, holder) ⇒ Object
-
.find_some(ids, holder) ⇒ Object
-
.new_resource(url, holder, hash = nil) ⇒ Object
-
.search(query, holder) ⇒ Object
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
89
90
91
92
93
94
|
# File 'lib/springnote_client/base.rb', line 89
def method_missing(method, *args)
str = method.to_s
(str[-1,1].to_s == "=") ?
@hash[str[0..-2]] = args[0] :
@hash[str]
end
|
Instance Attribute Details
#hash ⇒ Object
Returns the value of attribute hash.
21
22
23
|
# File 'lib/springnote_client/base.rb', line 21
def hash
@hash
end
|
#holder ⇒ Object
Returns the value of attribute holder.
21
22
23
|
# File 'lib/springnote_client/base.rb', line 21
def holder
@holder
end
|
Class Method Details
.build(hsh, holder) ⇒ Object
24
25
26
|
# File 'lib/springnote_client/base.rb', line 24
def build(hsh, holder)
new_resource(collection_url(holder), holder, hsh)
end
|
.collection_url(holder, params = {}) ⇒ Object
47
48
49
|
# File 'lib/springnote_client/base.rb', line 47
def collection_url(holder, params = {})
holder.make_url("/#{collection_name}", params)
end
|
.element_url(holder, id, params = {}) ⇒ Object
43
44
45
|
# File 'lib/springnote_client/base.rb', line 43
def element_url(holder, id, params = {})
holder.make_url("/#{collection_name}/#{id}", params)
end
|
.find(*args) ⇒ Object
51
52
53
54
55
56
57
|
# File 'lib/springnote_client/base.rb', line 51
def find(*args)
holder = args.pop
args.length == 1 ?
find_one(args[0], holder) :
find_some(args, holder)
end
|
.find_all(holder) ⇒ Object
65
66
67
|
# File 'lib/springnote_client/base.rb', line 65
def find_all(holder)
find_multi(holder)
end
|
.find_multi(holder, params = {}) ⇒ Object
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/springnote_client/base.rb', line 73
def find_multi(holder, params = {})
target = collection_url(holder, params)
ret = new_resource(target, holder).get(:accept => 'application/xml')
Hash.from_xml(ret)[collection_name].map do |item|
new_resource(element_url(holder, item['identifier']), holder, item)
end
rescue RuntimeError
[]
end
|
.find_one(id, holder) ⇒ Object
59
60
61
62
63
|
# File 'lib/springnote_client/base.rb', line 59
def find_one(id, holder)
new_resource(element_url(holder, id), holder) do |ret|
Hash.from_xml(ret.get(:accept => XML))[ret.singular_name]
end
end
|
.find_some(ids, holder) ⇒ Object
69
70
71
|
# File 'lib/springnote_client/base.rb', line 69
def find_some(ids, holder)
find_multi(holder, :identifiers => ids.join(','), :detail => true)
end
|
.new_resource(url, holder, hash = nil) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/springnote_client/base.rb', line 28
def new_resource(url, holder, hash = nil)
ret = new(url, holder.username, holder.password)
ret.holder = holder
if block_given?
ret.hash = yield(ret)
elsif hash
identifier = hash.delete('identifier')
ret.hash = hash
ret.identifier = identifier if identifier
end
ret
end
|
.search(query, holder) ⇒ Object
84
85
86
|
# File 'lib/springnote_client/base.rb', line 84
def search(query, holder)
find_multi(holder, :q => query)
end
|
Instance Method Details
#delete ⇒ Object
110
111
112
113
|
# File 'lib/springnote_client/base.rb', line 110
def delete
super
self.identifier = nil
end
|
#element_url ⇒ Object
121
122
123
|
# File 'lib/springnote_client/base.rb', line 121
def element_url
self.class.element_url(holder, @hash['identifier'])
end
|
#identifier=(newval) ⇒ Object
115
116
117
118
119
|
# File 'lib/springnote_client/base.rb', line 115
def identifier=(newval)
@hash['identifier'] = newval
self.url = element_url
newval
end
|
#inspect ⇒ Object
129
130
131
|
# File 'lib/springnote_client/base.rb', line 129
def inspect
@hash.inspect
end
|
#save ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/springnote_client/base.rb', line 96
def save
xml = @hash.to_xml(:root => singular_name)
if @hash['identifier']
put xml, :content_type => XML
else
ret = post(xml, :content_type => XML)
@hash = Hash.from_xml(ret)[singular_name]
self.url = element_url
end
self
end
|
#singular_name ⇒ Object
125
126
127
|
# File 'lib/springnote_client/base.rb', line 125
def singular_name
self.class.singular_name
end
|
#to_s ⇒ Object
133
134
135
|
# File 'lib/springnote_client/base.rb', line 133
def to_s
@hash.to_s
end
|