// Zoe AIM Away Message RSS Feed Generator // // Seth King and Douglas Thrift // // $Id$ #include "Publisher.hpp" #include "Rss.hpp" #include "Atom.hpp" Publisher::Publisher(const std::set& buddies, const Database& database, bool start) : buddies(buddies), database(database), start(start) { if (start) publish(); } void Publisher::publish() { cerr << bright << yellow << "Started updating feeds at " << Stamp() << ".\n" << reset; Stamp stamp; ext::Handle db(dbi::Connect(database.driver, database.host, database.user, database.password, database.db)); db->Execute("DELETE FROM messages WHERE stamp<'" + ext::String(stamp - Day(30)) + "'"); for (std::set::const_iterator buddy(buddies.begin()); buddy != buddies.end(); ++buddy) { ext::Handle messages(db->Execute("SELECT stamp, message" " FROM messages WHERE id='" + lexical_cast(buddy->getId()) + "'")); std::vector messages_; while (messages->MoveNext()) messages_.push_back(AwayMessage(messages->GetString("message"), messages->GetString("stamp"))); ext::String display(buddy->getDisplay(database)); Rss rss(*buddy, display, messages_, stamp); Atom atom(*buddy, display, messages_, stamp); cerr << bright << yellow << "Updated feeds for " << blue << *buddy << yellow << ".\n" << reset; } cerr << bright << yellow << "Finished updating feeds at " << Stamp() << ".\n" << reset; }