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



207
208
209
210
211
212
213
# File 'lib/rubyrest/atom.rb', line 207

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



215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/rubyrest/atom.rb', line 215

def format_entry( object, xml, params )
  resource = @parent.app.resource_by_domain( object )
  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.author )
  entry.add_element( "updated" ).add_text( DateProperty.format_date( object.updated ) )
  entry.add_element( "id" )
  entry.add_element( "summary" )
  
  resource.class.links.each{ |link|
    render = 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