summaryrefslogtreecommitdiff
path: root/src/leap/mail/imap/parser.py
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2014-02-20 17:19:53 -0300
committerTomás Touceda <chiiph@leap.se>2014-02-20 17:19:53 -0300
commita25e73b402d73eea03a7bf34c863a98577c78ace (patch)
tree268a86e5a668e604bfa8907a8d0f4a7025819238 /src/leap/mail/imap/parser.py
parent66c5602b77547ec24674f5e40c1d244f28ff5a49 (diff)
parentb2d97c9faef6037a065e2903afe5b0ab2624917e (diff)
Merge remote-tracking branch 'refs/remotes/kali/feature/parse-perf' into develop
Diffstat (limited to 'src/leap/mail/imap/parser.py')
-rw-r--r--src/leap/mail/imap/parser.py75
1 files changed, 1 insertions, 74 deletions
diff --git a/src/leap/mail/imap/parser.py b/src/leap/mail/imap/parser.py
index 6a9ace9..4a801b0 100644
--- a/src/leap/mail/imap/parser.py
+++ b/src/leap/mail/imap/parser.py
@@ -15,83 +15,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-Mail parser mixins.
+Mail parser mixin.
"""
-import cStringIO
-import StringIO
-import hashlib
import re
-from email.message import Message
-from email.parser import Parser
-
-from leap.common.check import leap_assert_type
-
-
-class MailParser(object):
- """
- Mixin with utility methods to parse raw messages.
- """
- def __init__(self):
- """
- Initializes the mail parser.
- """
- self._parser = Parser()
-
- def _get_parsed_msg(self, raw, headersonly=False):
- """
- Return a parsed Message.
-
- :param raw: the raw string to parse
- :type raw: basestring, or StringIO object
-
- :param headersonly: True for parsing only the headers.
- :type headersonly: bool
- """
- msg = self._get_parser_fun(raw)(raw, headersonly=headersonly)
- return msg
-
- def _get_hash(self, msg):
- """
- Returns a hash of the string representation of the raw message,
- suitable for indexing the inmutable pieces.
-
- :param msg: a Message object
- :type msg: Message
- """
- leap_assert_type(msg, Message)
- return hashlib.sha256(msg.as_string()).hexdigest()
-
- def _get_parser_fun(self, o):
- """
- Retunn the proper parser function for an object.
-
- :param o: object
- :type o: object
- :param parser: an instance of email.parser.Parser
- :type parser: email.parser.Parser
- """
- if isinstance(o, (cStringIO.OutputType, StringIO.StringIO)):
- return self._parser.parse
- if isinstance(o, basestring):
- return self._parser.parsestr
- # fallback
- return self._parser.parsestr
-
- def _stringify(self, o):
- """
- Return a string object.
-
- :param o: object
- :type o: object
- """
- # XXX Maybe we don't need no more, we're using
- # msg.as_string()
- if isinstance(o, (cStringIO.OutputType, StringIO.StringIO)):
- return o.getvalue()
- else:
- return o
-
class MBoxParser(object):
"""