3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/reactor/tools/where_query.rb', line 3
def where(key, value)
request = Cm::XmlRequest.prepare do |xml|
xml.where_tag!(base_name) do
xml.tag!(key) do
xml.text!(value) if value
end
end
xml.get_tag!(base_name) do
attributes.each do |_, xml_attribute|
xml.tag!(xml_attribute.name)
end
end
end
response = request.execute!
result = response.xpath("//#{base_name}")
result = [result] unless result.is_a?(Array)
result.map do |elem|
values = response_handler.multiple(elem, attributes.values)
instance = new
values.each do |name, response_value|
pair = attributes.find { |_n, a| a.name.to_sym == name.to_sym }
attribute = pair[0]
instance.send(:"#{attribute}=", response_value)
end
instance
end
rescue Cm::XmlRequestError
[]
end
|