Design on SimpleFeed

You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!
Aron Novak's picture

I discussed the further way of the Aggregation API SoC project with my mentors and the best way is to use SimpleFeed module as a base. There is a page http://aggregation.novaak.net/?q=node/224, where I tried to match the requirements of the project against what SimpleFeed does now. In addition I tried to sketch how SimpleFeed works now at http://aggregation.novaak.net/?q=node/225 . I contacted with the author of SimpleFeed, m3avrck, we'll arrange the efforts on the module. Here I would like to make the detailed plans of the planned modifications on SimpleFeed.

Module structure

Currently the module has 3 parts, the simplefeed, simplefeed_item and simplepie.
I imagine one additional part:

part simplefeed simplefeed_feed simplefeed_item parser
responsibility/tasks Handle the simplefeed_feed and simplefeed_item submodule, provide a basic management of feeds Handle how the feeds are represented (for eg. node/other) Handle how the feed items are represented and provide a basic management for feed items Download/parse the feed

Default parser, data structure

I plan to suit the Aggregation's module parser to SimpleFeed + define a common/standard data structure for the pluggable parsers.
The suggested data structure can be found here.. Maybe the core data members should be extended with some more basic information.
I made a benchmark to find chance to make it faster, but nothing relevant was found.
If the API requires a common data structure, it has an overhead of course, it has a performance loss, but in my opinion it's worth to have a common structure.

Hook system

hook name task simplefeed simplefeed_feed simplefeed_item parser
feed_expire Delete expired items and select the items for update call implement
feed_parse Process the input and produce the required data structure call implement
feed_save/update/delete Save the feed into the proper shape (node, etc) call implement
feed_item_save/update/delete Save the feed items into the proper shape (node, etc) call implement
feed_type Determine the compatible type of a submodule (ensure the compatibility of submodules) call implement implement implement
feed_validate Determine if the feed that the user wants to create is acceptable or not call implement
feed_get Get the URL which describes the source (RSS feed, FTP site, mailing list, etc) implement call

We need those feed/update/delete hooks for items and feeds also, because we cannot use the NodeAPI, because the it's not sure that the things become nodes.

Database structure

Currently it seems that the SimpleFeed database structure is mature, maybe no or minor changes will be necessary.