diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-04-07 15:15:55 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-04-07 15:15:55 +0300 |
commit | 4a459519f2f841d1283dca347c28cc5e6a4009ea (patch) | |
tree | 72b01154a4746f887275259b68f16e40cd38e4b3 | |
parent | 9a6dd537c7baeb3f62f26b974f9dcdf9010cb5e2 (diff) | |
download | distix-4a459519f2f841d1283dca347c28cc5e6a4009ea.tar.gz |
Add another msg id extractor test
-rw-r--r-- | distixlib/msg_id_extractor.py | 18 | ||||
-rw-r--r-- | distixlib/msg_id_extractor_tests.py | 16 |
2 files changed, 32 insertions, 2 deletions
diff --git a/distixlib/msg_id_extractor.py b/distixlib/msg_id_extractor.py index cbe985d..d789e90 100644 --- a/distixlib/msg_id_extractor.py +++ b/distixlib/msg_id_extractor.py @@ -16,6 +16,22 @@ # =*= License: GPL-3+ =*= +import email + def get_ids_from_message(msg): - return [] + return set(_yield_ids(msg)) + + +def _yield_ids(msg): + header_names = ('Message-Id', 'In-Reply-To', 'References') + for header_name in header_names: + for msg_id in _yield_ids_from_header(msg, header_name): + yield msg_id + + +def _yield_ids_from_header(msg, header_name): + values = msg.get_all(header_name) + if values: + for _, msg_id in email.utils.getaddresses(values): + yield msg_id diff --git a/distixlib/msg_id_extractor_tests.py b/distixlib/msg_id_extractor_tests.py index 6a7e259..b47b0f3 100644 --- a/distixlib/msg_id_extractor_tests.py +++ b/distixlib/msg_id_extractor_tests.py @@ -33,4 +33,18 @@ Subject: O, Romeo Wherefore art thou? ''') - self.assertEqual(distixlib.get_ids_from_message(msg), []) + self.assertEqual(distixlib.get_ids_from_message(msg), set()) + + def test_returns_id_from_message_id(self): + msg_text = '''\ +From: user@example.com +To: other@example.com +Subject: O, Romeo +Message-Id: <capulet123@verona> + +Wherefore art thou? +''' + + msg = email.message_from_string(msg_text) + self.assertEqual( + distixlib.get_ids_from_message(msg), set(['capulet123@verona'])) |