Support str type in email charset detection.
authorIvan Alejandro <ivanalejandro0@gmail.com>
Fri, 17 Jan 2014 17:40:44 +0000 (14:40 -0300)
committerIvan Alejandro <ivanalejandro0@gmail.com>
Fri, 17 Jan 2014 18:33:19 +0000 (15:33 -0300)
changes/support-str-in-charset-detection [new file with mode: 0644]
src/leap/common/mail.py

diff --git a/changes/support-str-in-charset-detection b/changes/support-str-in-charset-detection
new file mode 100644 (file)
index 0000000..015aab0
--- /dev/null
@@ -0,0 +1 @@
+  o Support str type in email charset detection.
index 2f2146d..b630c90 100644 (file)
@@ -20,26 +20,25 @@ Utility functions for email.
 import email
 import re
 
-from leap.common.check import leap_assert_type
-
 
 def get_email_charset(content, default="utf-8"):
     """
     Mini parser to retrieve the charset of an email.
 
     :param content: mail contents
-    :type content: unicode
+    :type content: unicode or str
     :param default: optional default value for encoding
     :type default: str or None
 
     :returns: the charset as parsed from the contents
     :rtype: str
     """
-    leap_assert_type(content, unicode)
+    if isinstance(content, unicode):
+        content.encode("utf-8", "replace")
 
     charset = default
     try:
-        em = email.message_from_string(content.encode("utf-8", "replace"))
+        em = email.message_from_string(content)
         # Miniparser for: Content-Type: <something>; charset=<charset>
         charset_re = r'''charset=(?P<charset>[\w|\d|-]*)'''
         charset = re.findall(charset_re, em["Content-Type"])[0]