78: def select(select, token = nil)
79: params = {
80: 'Action' => 'Select',
81: 'SelectExpression' => select,
82: }
83: params['NextToken'] =
84: token unless token.nil? || token.empty?
85:
86: doc = call(:get, params)
87: results = []
88: if doc
89: REXML::XPath.each(doc, "//Item") do |item|
90: name = REXML::XPath.first(item, './Name/text()').to_s
91:
92: attributes = {'Name' => name}
93: REXML::XPath.each(item, "./Attribute") do |attr|
94: key = REXML::XPath.first(attr, './Name/text()').to_s
95: value = REXML::XPath.first(attr, './Value/text()').to_s
96: ( attributes[key] ||= [] ) << value
97: end
98: results << attributes
99: end
100:
101: end
102:
103: hash_results = {}
104: results.each do |item|
105: hash_results[item.delete('Name')] = item
106: end
107:
108: hash_results.empty? ? nil : hash_results
109: end