get_content_type(), get_content_maintype(), get_content_subtype(): RFC

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.
This commit is contained in:
Barry Warsaw 2002-08-20 14:50:09 +00:00
parent dfea3b3963
commit f36d804b3b
1 changed files with 5 additions and 5 deletions

View 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):