(This came from a conversation at OSCMS and the explosion of contrib aggregation modules. po)
To support multiple modules for pulling RSS and ATOM (and other) web feeds into Drupal, the following functions need to be supported in a core Aggregator API. In Drupal 5.1, all Aggregator.module functions are internal to the module and cannot be accessed by contributed modules. This results in duplicate code and opens potential security risks.
Below is an outline of the API functions needed by external aggregation modules. These recommendations are based on the Feed handling elements of the contributed MySite module.
feed_form($settings = array('title', 'url'))
A simple form element that returns the TITLE and URL elements for adding a new feed to a Drupal site. Optionally, this function might return all the settings that an administrator has access to (including refresh rate and category settings).
feed_verify($url, $title)
A submit hook that will check a submitted URL to see if it returns a valid XML feed. A necessary stage in processing new feeds before saving.
feed_parse($feed)
Parses the feed into the elements defined by the aggregator API (see feed_store($feed), below).
feed_check($url, $title)
Check a TITLE or URL for duplication against existing feeds.
feed_update($feed)
Updates the requested feed.
feed_title($title)