Design on SimpleFeed
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.

