Class: RubyRest::Atom::EntryFormatter

Inherits:
DomainFormatter show all
Defined in:
lib/rubyrest/atom.rb

Instance Method Summary collapse

Methods inherited from DomainFormatter

#app, #initialize

Constructor Details

This class inherits a constructor from RubyRest::Atom::DomainFormatter

Instance Method Details

#format(object, params) ⇒ Object


239
240
241
242
243
244
245
# File 'lib/rubyrest/atom.rb', line 239

def format( object, params )
  params[:content_type]="application/atom+xml"
  xml = REXML::Document.new
  xml << REXML::XMLDecl.default
  format_entry( object, xml, params )
  return xml
end

#format_entry(object, xml, params) ⇒ Object


247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/rubyrest/atom.rb', line 247

def format_entry( object, xml, params )
  resource = params[:resource]
  raise "no resource found for entry #{object}" if !resource
  entry = xml.add_element( "entry", NAMESPACES )
  entry.add_element( "title" )
  entry.add_element( "author" ).add_element( "name" ).add_text( object[:modifiedby] )
  entry.add_element( "updated" ).add_text( DateProperty.format_date( object[:modified] ) )
  entry.add_element( "id" )
  entry.add_element( "summary" )
  
  resource.class.links.each{ |link|
    render = link[:role] == nil || params[:principal].profile.split( "," ).include?( link[:role].to_s )
    entry.add_element( "link", { "title" => link[:title].to_s, "rel" => link[:rel].to_s} ) if render
  }
  
  content = entry.add_element( "rubyrest:content" )
  resource.class.props.each{ |map| 
    @parent.property( map ).format( object, map, content ) 
  }
end