From 1ff9c4c1f77eed7926d1d608521dd96939fa974e Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Tue, 15 May 2007 17:49:57 +0200 Subject: [PATCH] Move message format from Feeder to Sender class darcs-hash:20070515154957-86b55-3ad909492a4251f2f9620ee30818bd038babc986.gz --- jmc.xml | 2 +- src/jmc/jabber/component.py | 46 +++++++++---------- src/jmc/jabber/tests/component.py | 76 +++++++++++++++---------------- 3 files changed, 60 insertions(+), 64 deletions(-) diff --git a/jmc.xml b/jmc.xml index a34aad1..55ea976 100644 --- a/jmc.xml +++ b/jmc.xml @@ -17,6 +17,6 @@ ./spool/jabber ./run/jabber/jmc.pid - 5 + 1 iso-8859-1 diff --git a/src/jmc/jabber/component.py b/src/jmc/jabber/component.py index 27c8a24..e1506b0 100644 --- a/src/jmc/jabber/component.py +++ b/src/jmc/jabber/component.py @@ -26,7 +26,7 @@ import logging from pyxmpp.message import Message from jcl.model.account import PresenceAccount -from jcl.jabber.feeder import FeederComponent, Feeder, Sender +from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, HeadlineSender from jmc.model.account import MailAccount, IMAPAccount, POP3Account from jmc.lang import Lang @@ -68,19 +68,18 @@ class MailFeeder(Feeder): """For live email checking account, mark emails received while offline as read. Return a boolean to continue mail checking or not (if waiting for password)""" - result = [] if _account.password is None: if not _account.waiting_password_reply: - result.extend(self.component.account_manager.ask_password(_account, \ - _account.default_lang_class)) - return (False, result) + self.component.send_stanzas(self.component.account_manager.ask_password(_account, \ + _account.default_lang_class)) + return False try: _account.connect() _account.mark_all_as_read() _account.disconnect() _account.first_check = False _account.in_error = False - return (True, result) + return True except Exception, e: if _account.connected: try: @@ -88,8 +87,8 @@ class MailFeeder(Feeder): except: # We have done everything we could _account.connected = False - result.extend(self.component.account_manager.send_error(_account, e)) - return (False, result) + self.component.send_error(_account, e) + return False def feed(self, _account): """Check for new emails for given MailAccount and return a list of @@ -97,8 +96,7 @@ class MailFeeder(Feeder): self.__logger.debug("MailFeeder.feed") result = [] if _account.first_check and _account.live_email_only: - (continue_checking, to_send) = self.initialize_live_email(_account) - result.extend(to_send) + continue_checking = self.initialize_live_email(_account) if not continue_checking: return result _account.lastcheck += 1 @@ -108,8 +106,8 @@ class MailFeeder(Feeder): if action != PresenceAccount.DO_NOTHING: try: if _account.password is None: - result.extend(self.component.account_manager.ask_password(_account, \ - _account.default_lang_class)) + self.component.send_stanzas(self.component.account_manager.ask_password(_account, \ + _account.default_lang_class)) return result self.__logger.debug("Checking " + _account.name) self.__logger.debug("\t" + _account.login \ @@ -121,10 +119,8 @@ class MailFeeder(Feeder): mail_index = _account.get_next_mail_index(mail_list) while mail_index is not None: (body, email_from) = _account.get_mail(mail_index) - result.append(Message(from_jid = _account.jid, \ - to_jid = _account.user_jid, \ - subject = _account.default_lang_class.new_mail_subject % (email_from), \ - body = body)) + result.append((_account.default_lang_class.new_mail_subject % (email_from), \ + body)) mail_index = _account.get_next_mail_index(mail_list) elif action == MailAccount.DIGEST: body = "" @@ -137,11 +133,8 @@ class MailFeeder(Feeder): mail_index = _account.get_next_mail_index(mail_list) new_mail_count += 1 if body != "": - result.append(Message(from_jid = _account.jid, \ - to_jid = _account.user_jid, \ - stanza_type = "headline", \ - subject = _account.default_lang_class.new_digest_subject % (new_mail_count), \ - body = body)) + result.append((_account.default_lang_class.new_digest_subject % (new_mail_count), \ + body)) else: raise Exception("Unkown action: " + str(action) + "\nPlease reconfigure account.") @@ -155,13 +148,16 @@ class MailFeeder(Feeder): except: # We have done everything we could _account.connected = False - result.extend(self.component.account_manager.send_error(_account, e)) + self.component.send_error(_account, e) return result -class MailSender(Sender): +class MailSender(MessageSender, HeadlineSender): """Send emails messages to jabber users""" - def send(self, to_account, data): + def send(self, to_account, subject, body): """Send given emails (in data) as Jabber messages""" - pass + if to_account.action == MailAccount.RETRIEVE: + MessageSender.send(self, to_account, subject, body) + elif to_account.action == MailAccount.DIGEST: + HeadlineSender.send(self, to_account, subject, body) diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py index 1bc65b8..1c47536 100644 --- a/src/jmc/jabber/tests/component.py +++ b/src/jmc/jabber/tests/component.py @@ -182,9 +182,11 @@ class MailComponent_TestCase(unittest.TestCase): account11.live_email_only = True account11.password = None result = self.comp.feeder.feed(account11) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + self.assertEquals(len(result), 0) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertTrue(account11.first_check) self.assertTrue(account11.waiting_password_reply) self.assertFalse(account11.in_error) @@ -257,9 +259,11 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.waiting_password_reply) result = self.comp.feeder.feed(account11) self.assertFalse(account11.in_error) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + self.assertEquals(len(result), 0) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertEquals(account11.lastcheck, 0) self.assertFalse(account11.connected) self.assertFalse(account11.has_connected) @@ -279,9 +283,11 @@ class MailComponent_TestCase(unittest.TestCase): account11.get_mail_list = lambda: [] result = self.comp.feeder.feed(account11) self.assertTrue(account11.in_error) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + self.assertEquals(len(result), 0) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertEquals(account11.lastcheck, 0) self.assertFalse(account11.connected) self.assertTrue(account11.has_connected) @@ -331,20 +337,14 @@ class MailComponent_TestCase(unittest.TestCase): self.assertTrue(account11.has_connected) self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(result), 2) - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].stanza_type, "message") - self.assertEquals(result[0].get_subject(), \ + self.assertEquals(result[0][0], \ account11.default_lang_class.new_mail_subject \ % ("from1@test.com")) - self.assertEquals(result[0].get_body(), "body1") - self.assertEquals(result[1].get_from(), "account11@jmc.test.com") - self.assertEquals(result[1].get_to(), "test1@test.com") - self.assertEquals(result[1].stanza_type, "message") - self.assertEquals(result[1].get_subject(), \ + self.assertEquals(result[0][1], "body1") + self.assertEquals(result[1][0], \ account11.default_lang_class.new_mail_subject \ % ("from2@test.com")) - self.assertEquals(result[1].get_body(), "body2") + self.assertEquals(result[1][1], "body2") del account.hub.threadConnection def test_feed_digest_no_mail(self): @@ -391,13 +391,10 @@ class MailComponent_TestCase(unittest.TestCase): self.assertTrue(account11.has_connected) self.assertEquals(len(self.comp.stream.sent), 0) self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].stanza_type, "message") - self.assertEquals(result[0].get_subject(), \ + self.assertEquals(result[0][0], \ account11.default_lang_class.new_digest_subject \ % (2)) - self.assertEquals(result[0].get_body(), \ + self.assertEquals(result[0][1], \ "body1\n----------------------------------\nbody2\n----------------------------------\n") del account.hub.threadConnection @@ -414,9 +411,8 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - (continue_checking, result) = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, True) - self.assertEquals(result, []) self.assertFalse(account11.first_check) self.assertFalse(account11.waiting_password_reply) self.assertFalse(account11.in_error) @@ -438,11 +434,12 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - (continue_checking, result) = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, False) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertTrue(account11.first_check) self.assertFalse(account11.waiting_password_reply) self.assertTrue(account11.in_error) @@ -464,11 +461,12 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - (continue_checking, result) = self.comp.feeder.initialize_live_email(account11) + continue_checking = self.comp.feeder.initialize_live_email(account11) self.assertEquals(continue_checking, False) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertTrue(account11.first_check) self.assertFalse(account11.waiting_password_reply) self.assertTrue(account11.in_error) @@ -490,10 +488,12 @@ class MailComponent_TestCase(unittest.TestCase): self.assertFalse(account11.in_error) account11.live_email_only = True account11.password = "password" - (continue_checking, result) = self.comp.feeder.initialize_live_email(account11) - self.assertEquals(len(result), 1) - self.assertEquals(result[0].get_to(), "test1@test.com") - self.assertEquals(result[0].get_from(), "account11@jmc.test.com") + continue_checking = self.comp.feeder.initialize_live_email(account11) + self.assertFalse(continue_checking) + sent = self.comp.stream.sent + self.assertEquals(len(sent), 1) + self.assertEquals(sent[0].get_to(), "test1@test.com") + self.assertEquals(sent[0].get_from(), "account11@jmc.test.com") self.assertEquals(continue_checking, False) self.assertTrue(account11.first_check) self.assertFalse(account11.waiting_password_reply)