Modified: trunk/lib/rest.rb (2088 => 2089)
--- trunk/lib/rest.rb 2009-02-05 18:06:59 UTC (rev 2088)
+++ trunk/lib/rest.rb 2009-02-05 18:27:11 UTC (rev 2089)
@@ -104,114 +104,103 @@
end
if (model_data['Read'][i] == 'yes')
+
accessor = model_data['Accessor'][i]
- text = ''
+ text = ''
+ attrs = {}
case model_data['Encoding'][i]
- when 'file-column'
+ when 'list'
- # Do nothing
+ list_element = XML::Node.new(model_data['REST Attribute'][i])
- when 'xml'
-
- if query['version'] and model_data['Versioned'][i] == 'yes'
- text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}")
- else
- text = eval("ob.#{accessor}")
+ attrs.each do |key,value|
+ list_element[key] = value
end
- else
+ root << list_element
- if query['version'] and model_data['Versioned'][i] == 'yes'
- text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}").to_s
- else
- text = eval("ob.#{accessor}").to_s
+ collection = eval("ob.#{model_data['Accessor'][i]}")
+
+ # filter out things that the user cannot see
+ collection = collection.select do |c|
+ not c.respond_to?('contribution') or Authorization.is_authorized?("view", nil, c, user)
end
- end
- attrs = {}
+ collection.each do |item|
- case model_data['Encoding'][i]
+ item_attrs = { }
- when 'base64'
+ item_uri = rest_resource_uri(item)
+ item_attrs['resource'] = item_uri if item_uri
+ item_attrs['uri'] = rest_access_uri(item)
- text = Base64.encode64(text)
- attrs = { 'type' => 'binary', 'encoding' => 'base64' }
+ list_element_accessor = model_data['List Element Accessor'][i]
+ list_element_text = list_element_accessor ? eval("item.#{model_data['List Element Accessor'][i]}") : item
- when 'file-column';
+ if list_element_text.instance_of?(String)
+ el = XML::Node.new(model_data['List Element Name'][i])
- text = file_column_url(ob, model_data['Accessor'][i])
- end
+ item_attrs.each do |key,value|
+ el[key] = value
+ end
- case model_data['Encoding'][i]
+ el << list_element_text.to_s if list_element_text
- when 'list'
+ list_element << el
+ else
+ list_element << rest_reference(list_element_text, query)
+ end
+ end
- list_element = XML::Node.new(model_data['REST Attribute'][i])
+ when 'xml'
- attrs.each do |key,value|
- list_element[key] = value
- end
+ if query['version'] and model_data['Versioned'][i] == 'yes'
+ text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}")
+ else
+ text = eval("ob.#{accessor}")
+ end
- root << list_element
+ root << text
- collection = eval("ob.#{model_data['Accessor'][i]}")
+ else
- # filter out things that the user cannot see
- collection = collection.select do |c|
- not c.respond_to?('contribution') or Authorization.is_authorized?("view", nil, c, user)
- end
+ if model_data['Encoding'][i] == 'file-column'
- collection.each do |item|
+ text = file_column_url(ob, model_data['Accessor'][i])
- item_attrs = { }
+ else
- item_uri = rest_resource_uri(item)
- item_attrs['resource'] = item_uri if item_uri
- item_attrs['uri'] = rest_access_uri(item)
+ if query['version'] and model_data['Versioned'][i] == 'yes'
+ text = eval("ob.versions[#{(query['version'].to_i - 1).to_s}].#{accessor}").to_s
+ else
+ text = eval("ob.#{accessor}").to_s
+ end
- list_element_accessor = model_data['List Element Accessor'][i]
- list_element_text = list_element_accessor ? eval("item.#{model_data['List Element Accessor'][i]}") : item
-
- if list_element_text.instance_of?(String)
- el = XML::Node.new(model_data['List Element Name'][i])
-
- item_attrs.each do |key,value|
- el[key] = value
+ if (model_data['Encoding'][i] == 'base64')
+ text = Base64.encode64(text)
+ attrs = { 'type' => 'binary', 'encoding' => 'base64' }
end
- el << list_element_text.to_s if list_element_text
-
- list_element << el
- else
- list_element << rest_reference(list_element_text, query)
+ if model_data['Foreign Accessor'][i]
+ resource_uri = eval("rest_resource_uri(ob.#{model_data['Foreign Accessor'][i]})")
+ attrs['resource'] = resource_uri if resource_uri
+ attrs['uri'] = eval("rest_access_uri(ob.#{model_data['Foreign Accessor'][i]})")
+ end
end
- end
- when 'xml'
+ # puts "ATTRIBUTE = #{model_data['REST Attribute'][i]}, ATTRS = #{attrs.inspect}, text = #{text.inspect}"
- root << text
+ el = XML::Node.new(model_data['REST Attribute'][i])
- else
+ attrs.each do |key,value|
+ el[key] = value if value
+ end
- if model_data['Foreign Accessor'][i]
- resource_uri = eval("rest_resource_uri(ob.#{model_data['Foreign Accessor'][i]})")
- attrs['resource'] = resource_uri if resource_uri
- attrs['uri'] = eval("rest_access_uri(ob.#{model_data['Foreign Accessor'][i]})")
- end
-
-# puts "ATTRIBUTE = #{model_data['REST Attribute'][i]}, ATTRS = #{attrs.inspect}, text = #{text.inspect}"
-
- el = XML::Node.new(model_data['REST Attribute'][i])
-
- attrs.each do |key,value|
- el[key] = value if value
- end
-
- el << text
- root << el
+ el << text
+ root << el
end
end
end