]> granicus.if.org Git - python/commitdiff
get_content_type(), get_content_maintype(), get_content_subtype(): RFC
authorBarry Warsaw <barry@python.org>
Tue, 20 Aug 2002 14:50:09 +0000 (14:50 +0000)
committerBarry Warsaw <barry@python.org>
Tue, 20 Aug 2002 14:50:09 +0000 (14:50 +0000)
2045, section 5.2 states that if the Content-Type: header is
syntactically invalid, the default type should be text/plain.
Implement minimal sanity checking of the header -- it must have
exactly one slash in it.  This closes SF patch #597593 by Skip, but in
a different way.

Note that these methods used to raise ValueError for invalid ctypes,
but now they won't.

Lib/email/Message.py

index 89ace24b2be449d48fe60fc1ae04e5d42c5256a1..40e4785a42ddfa223b36eb31093b2c941455d561 100644 (file)
@@ -422,7 +422,11 @@ class Message:
         if value is missing:
             # This should have no parameters
             return self.get_default_type()
-        return paramre.split(value)[0].lower().strip()
+        ctype = paramre.split(value)[0].lower().strip()
+        # RFC 2045, section 5.2 says if its invalid, use text/plain
+        if ctype.count('/') <> 1:
+            return 'text/plain'
+        return ctype
 
     def get_content_maintype(self):
         """Returns the message's main content type.
@@ -432,8 +436,6 @@ class Message:
         ValueError is raised.
         """
         ctype = self.get_content_type()
-        if ctype.count('/') <> 1:
-            raise ValueError, 'No maintype found in: %s' % ctype
         return ctype.split('/')[0]
 
     def get_content_subtype(self):
@@ -444,8 +446,6 @@ class Message:
         ValueError is raised.
         """
         ctype = self.get_content_type()
-        if ctype.count('/') <> 1:
-            raise ValueError, 'No subtype found in: %s' % ctype
         return ctype.split('/')[1]
 
     def get_default_type(self):