Kaydet (Commit) f36d804b authored tarafından Barry Warsaw's avatar Barry Warsaw

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.
üst dfea3b39
......@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment