rumx 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/History.md +4 -0
- data/lib/rumx/server.rb +75 -33
- metadata +2 -2
data/History.md
CHANGED
data/lib/rumx/server.rb
CHANGED
@@ -92,38 +92,6 @@ module Rumx
|
|
92
92
|
def attribute_value_tag(attribute, param_name, value)
|
93
93
|
partial :attribute_value_tag, :locals => {:attribute => attribute, :param_name => param_name, :value => value}
|
94
94
|
end
|
95
|
-
|
96
|
-
# Brain-dead hyperic doesn't know about json?
|
97
|
-
def to_properties(val, prefix=nil)
|
98
|
-
str = ''
|
99
|
-
new_prefix = (prefix + '.') if prefix
|
100
|
-
new_prefix = new_prefix || ''
|
101
|
-
if val.kind_of?(Hash)
|
102
|
-
val.each do |key, value|
|
103
|
-
str += to_properties(value, new_prefix + key.to_s)
|
104
|
-
end
|
105
|
-
elsif val.kind_of?(Array)
|
106
|
-
val.each_with_index do |value, i|
|
107
|
-
str += to_properties(value, new_prefix + i.to_s)
|
108
|
-
end
|
109
|
-
else
|
110
|
-
str += "#{prefix}=#{val}\n"
|
111
|
-
end
|
112
|
-
return str
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def handle_attributes(attribute_hash, format)
|
117
|
-
case format
|
118
|
-
when 'json'
|
119
|
-
content_type :json
|
120
|
-
attribute_hash.to_json
|
121
|
-
when 'properties'
|
122
|
-
content_type :properties
|
123
|
-
to_properties(attribute_hash)
|
124
|
-
else
|
125
|
-
404
|
126
|
-
end
|
127
95
|
end
|
128
96
|
|
129
97
|
get '/' do
|
@@ -146,7 +114,6 @@ module Rumx
|
|
146
114
|
path = params[:splat][0]
|
147
115
|
bean = Bean.find(path.split('/'))
|
148
116
|
return 404 unless bean
|
149
|
-
#puts "params=#{params.inspect}"
|
150
117
|
# For post we write, then read. get is the other way around.
|
151
118
|
if params[:format]
|
152
119
|
handle_attributes(bean.bean_set_and_get_attributes(params), params[:format])
|
@@ -155,6 +122,26 @@ module Rumx
|
|
155
122
|
end
|
156
123
|
end
|
157
124
|
|
125
|
+
# Allow a monitor to get the attributes from multiple beans.
|
126
|
+
# Use with params such as prefix_0=bean0&bean_0=MyFolder/MyBean&prefix_1=bean1&bean_1=MyOtherFolder/SomeOtherBean
|
127
|
+
get '/attributes.?:format?' do
|
128
|
+
hash = {}
|
129
|
+
with_indexed_params(params) do |prefix, bean, new_params|
|
130
|
+
return 404 unless bean
|
131
|
+
hash[prefix.to_sym] = bean.bean_get_and_set_attributes(new_params)
|
132
|
+
end
|
133
|
+
handle_attributes(hash, params[:format])
|
134
|
+
end
|
135
|
+
|
136
|
+
post '/attributes.?:format?' do
|
137
|
+
hash = {}
|
138
|
+
with_indexed_params(params) do |prefix, bean, new_params|
|
139
|
+
return 404 unless bean
|
140
|
+
hash[prefix.to_sym] = bean.bean_set_and_get_attributes(new_params)
|
141
|
+
end
|
142
|
+
handle_attributes(hash, params[:format])
|
143
|
+
end
|
144
|
+
|
158
145
|
get '/*/attribute.?:format?' do
|
159
146
|
path = params[:splat][0]
|
160
147
|
bean, attribute, param_name, value = Bean.find_attribute(path.split('/'))
|
@@ -202,5 +189,60 @@ module Rumx
|
|
202
189
|
operation.run(bean, params).to_json
|
203
190
|
end
|
204
191
|
|
192
|
+
#######
|
193
|
+
protected
|
194
|
+
#######
|
195
|
+
|
196
|
+
def handle_attributes(attribute_hash, format)
|
197
|
+
case format
|
198
|
+
when 'json'
|
199
|
+
content_type :json
|
200
|
+
attribute_hash.to_json
|
201
|
+
when 'properties'
|
202
|
+
content_type :properties
|
203
|
+
to_properties(attribute_hash)
|
204
|
+
else
|
205
|
+
404
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
#######
|
210
|
+
private
|
211
|
+
#######
|
212
|
+
|
213
|
+
def to_properties(val, prefix=nil)
|
214
|
+
str = ''
|
215
|
+
new_prefix = (prefix + '.') if prefix
|
216
|
+
new_prefix = new_prefix || ''
|
217
|
+
if val.kind_of?(Hash)
|
218
|
+
val.each do |key, value|
|
219
|
+
str += to_properties(value, new_prefix + key.to_s)
|
220
|
+
end
|
221
|
+
elsif val.kind_of?(Array)
|
222
|
+
val.each_with_index do |value, i|
|
223
|
+
str += to_properties(value, new_prefix + i.to_s)
|
224
|
+
end
|
225
|
+
else
|
226
|
+
str += "#{prefix}=#{val}\n"
|
227
|
+
end
|
228
|
+
return str
|
229
|
+
end
|
230
|
+
|
231
|
+
def with_indexed_params(params)
|
232
|
+
i = 0
|
233
|
+
while (prefix = params[prefix_key = "prefix_#{i}"]) && (bean_name = params[bean_key = "bean_#{i}"])
|
234
|
+
new_params = {}
|
235
|
+
postfix = "_#{i}"
|
236
|
+
bean = Bean.find(bean_name.split('/'))
|
237
|
+
params.each do |key, value|
|
238
|
+
if key.end_with?(postfix) && key != prefix_key && key != bean_key
|
239
|
+
new_params[key[0...-(postfix.size)]] = value
|
240
|
+
end
|
241
|
+
end
|
242
|
+
yield prefix, bean, new_params
|
243
|
+
i += 1
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
205
247
|
end
|
206
248
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rumx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Brad Pardee
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-12-
|
13
|
+
date: 2011-12-15 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sinatra
|