30 |
|
|
31 |
|
int Collector::collect() |
32 |
|
{ |
33 |
< |
cerr << bright << green << "Started collector daemon at " << Stamp() |
33 |
> |
api::Cerr << bright << green << "Started collector daemon at " << Stamp() |
34 |
|
<< ".\n" << reset; |
35 |
|
|
36 |
|
net::Oscar::Session session; |
66 |
|
"Tahoma\" size=2>Mommy told me not to talk to strangers.</font> O:-)", |
67 |
|
capabilities); |
68 |
|
|
69 |
< |
// figure out whether or not we logged in |
69 |
> |
// XXX figure out whether or not we logged in |
70 |
|
|
71 |
|
while (true) sleep(Hour(1)); |
72 |
|
} |
91 |
|
|
92 |
|
if (!ext::String(message).IsEmpty()) // XXX |
93 |
|
{ |
94 |
< |
if (Zoe::debug) cerr << "buddy = " << buddy << "\nmessage = " << message |
95 |
< |
<< '\n'; |
94 |
> |
if (Zoe::debug) api::Cerr << "buddy = " << buddy << "\nmessage = " |
95 |
> |
<< message << "\n"; |
96 |
|
|
97 |
< |
ext::Handle<dbi::Connection> db(dbi::Connect(database.driver, |
98 |
< |
database.host, database.user, database.password, database.db)); |
99 |
< |
ext::Handle<dbi::ResultSet> previous(db->Execute("SELECT message " |
100 |
< |
"FROM messages WHERE stamp=(SELECT MAX(stamp) FROM messages " |
101 |
< |
"WHERE id='" + lexical_cast<ext::String>(buddy.getId()) |
102 |
< |
+ "') AND id='" + lexical_cast<ext::String>(buddy.getId()) + "'")); |
97 |
> |
ext::Handle<dbi::Driver> driver(dbi::GetDriver(database.driver)); |
98 |
> |
ext::Handle<dbi::Connection> db(driver->Connect(database.host, |
99 |
> |
database.user, database.password, database.db)); |
100 |
> |
ext::Handle<dbi::ResultSet> previous(db->Execute(ios::String() |
101 |
> |
<< "SELECT message FROM messages WHERE stamp=(SELECT MAX(stamp) " |
102 |
> |
<< "FROM messages WHERE id='" << buddy.getId() << "') AND id='" |
103 |
> |
<< buddy.getId() << "'")); |
104 |
|
|
105 |
|
if (previous->MoveNext()) |
106 |
|
{ |
107 |
|
if (ext::String(message) == previous->GetString("message")) return; |
108 |
|
} |
109 |
|
|
110 |
< |
db->Execute("INSERT INTO messages (stamp, message, id) VALUES ('" |
111 |
< |
+ ext::String(message.getStamp()) + "', '" + db->Escape(message) |
112 |
< |
+ "', '" + lexical_cast<ext::String>(buddy.getId()) + "')"); |
110 |
> |
db->Execute(ios::String() << "INSERT INTO messages (stamp, message, id)" |
111 |
> |
<< " VALUES ('" << message.getStamp() << "', '" |
112 |
> |
<< db->Escape(message) << "', '" << buddy.getId() << "')"); |
113 |
|
|
114 |
< |
cerr << bright << red << "Collected away message from " << blue << buddy |
115 |
< |
<< red << " at " << Stamp() << ".\n" << reset; |
114 |
> |
api::Cerr << bright << red << "Collected away message from " << blue |
115 |
> |
<< buddy << red << " at " << Stamp() << ".\n" << reset; |
116 |
> |
} |
117 |
> |
|
118 |
> |
if (user.screenname != buddy.getDisplay(database)) |
119 |
> |
{ |
120 |
> |
buddy.setDisplay(user.screenname, database); |
121 |
> |
|
122 |
> |
sleep(1); |
123 |
> |
|
124 |
> |
icbm->Simple(buddy, "<font face=\"Tahoma\" size=2>So sexy!</font> :-*"); |
125 |
|
} |
126 |
|
} |
127 |
|
|
128 |
|
void Collector::receive(const ext::String& buddy, const ext::String& message) |
129 |
|
{ |
130 |
< |
if (Zoe::debug) cerr << "buddy = " << Buddy(buddy) << "\nmessage = " |
131 |
< |
<< message << '\n'; |
130 |
> |
if (Zoe::debug) api::Cerr << "buddy = " << Buddy(buddy) << "\nmessage = " |
131 |
> |
<< message << "\n"; |
132 |
|
|
133 |
|
if (buddies.find(buddy) != buddies.end()) |
134 |
|
{ |
136 |
|
|
137 |
|
sleep(1); |
138 |
|
|
139 |
< |
icbm->Simple(buddy, ext::String(buddy_) + " = {\n rss = " |
140 |
< |
+ buddy_.getRss() + "\n atom = " + buddy_.getAtom() + "\n}"); |
139 |
> |
icbm->Simple(buddy, "<font face=\"Tahoma\" size=2>Hello! I am Zoe. I am" |
140 |
> |
" supposed to be collecting your <a href=\"" + buddy_.getLink() |
141 |
> |
+ "\">Away Messages</a> (<a href=\"" + buddy_.getRssLink() + "\">" |
142 |
> |
"RSS 2.0</a>) (<a href=\"" + buddy_.getAtomLink() + "\">Atom</a>)." |
143 |
> |
"</font> :-*"); |
144 |
|
} |
145 |
|
else |
146 |
|
{ |