atom-tools is an all-in-one Atom library. It parses and builds Atom (RFC 4287) entries and feeds, and manipulates Atom Publishing Protocol (RFC 5023) Collections. It also comes with a set of commandline utilities for working with AtomPub Collections. It is not the fastest Ruby Atom library, but it is comprehensive and makes handling extensions to the Atom format very easy.


License
Other
Install
gem install atom-tools -v 2.0.5

Documentation

= atom-tools README

atom-tools is an all-in-one library for parsing, creating and manipulating Atom <http://www.w3.org/2005/Atom> feeds and entries.
It handles all the nasty XML and HTTP details so that you don't have to.

== Example

  require "atom/feed"
  require "open-uri"

  feed = Atom::Feed.new "http://www.tbray.org/ongoing/ongoing.atom"
    # => <http://www.tbray.org/ongoing/ongoing.atom entries: 0 title=''>

  feed.update!
  feed.entries.length
    # => 20

  feed.title.to_s
    # => "ongoing"

  feed.authors.first.name
    # => "Tim Bray"

  entry = feed.entries.first
    # => #<Atom::Entry id:'http://www.tbray.org/ongoing/When/200x/2006/11/07/Munich'>

  entry.title.to_s
    # => "M\303\274nchen"

  entry.links.last
    # => {"href"=>"http://www.tbray.org/ongoing/When/200x/2006/11/07/Munich#comments", "rel"=>"replies", "type" => "application/xhtml+xml"}

  entry.summary.to_s
    # => "That local spelling is nicer than the ugly English [...]"

Things are explained in more detail in the RDoc.

== The Atom Publishing Protocol

  require "atom/service"

  service = Atom::Service.new "http://necronomicorp.com/app.xml"
  coll = service.workspaces.first.collections.first
    # => <http://necronomicorp.com/testatom?app entries: 0 title='testing: entry endpoint'>

  coll.feed.update!
    # => <http://necronomicorp.com/testatom?app entries: 10 title='testing the APP'>

  entry = coll.feed.entries.first
  entry.title
    # => 'html entities'#text

  # modify the title
  entry.title = "HTML entities"

  # store the modified entry
  coll.put! entry
    # => #<Net::HTTPOK 200 OK readbody=true>

  coll.feed.entries.first.title
    # => 'HTML entities'#text

For details on authentication, see the documentation for Atom::HTTP.