// Zoe AIM Away Message RSS Feed Generator // // Seth King and Douglas Thrift // // $Id$ #ifndef _Buddy_hpp_ #define _Buddy_hpp_ #include "Zoe.hpp" class Buddy { private: ext::String login, rss, atom, link; ext::Uuid id; public: Buddy(const ext::String& login, const ext::String& rss = "", const ext::String& atom = "", const ext::String& link = "") : login(net::Oscar::collapse(login)), rss(rss.IsEmpty() ? login + ".rss" : rss), atom(atom.IsEmpty() ? login + ".atom" : atom), link(link) {} Buddy(const net::Oscar::UserInfo& user) : login(net::Oscar::collapse(user.screenname)) {} const ext::String& getRss() const { return rss; } const ext::String& getAtom() const { return atom; } const ext::String& getLink() const { return link; } const ext::Uuid& getId() const { return id; } ext::String getRssLink() const; ext::String getAtomLink() const; ext::String getDisplay(const Database& database) const; void setId(const ext::Uuid& id) { this->id = id; } void setDisplay(const ext::String& display, const Database& database) const; bool operator==(const Buddy& buddy) const { return login == buddy.login; } bool operator<(const Buddy& buddy) const { return std::string(login) < std::string(buddy.login); } operator const ext::String&() const { return login; } }; inline ios::PrintWriter& operator<<(ios::PrintWriter& pout, const Buddy& buddy) { return pout << ext::String(buddy); } #endif // _Buddy_hpp_