Handle multiple content-types into one header field
HTTP specification states that multiple values for one header can be passed if separated by commas. rOCCI uses that for the content type, therefore we must support it. Change-Id: Ib02e6659e112ee9fb90da986339f2f749f0dbc87 Closes-Bug: 1507925
This commit is contained in:
parent
02a99bc5cd
commit
64688e792a
|
@ -113,6 +113,27 @@ class TestMiddleware(base.TestCase):
|
|||
result = req.get_response(self.app)
|
||||
self.assertEqual(406, result.status_code)
|
||||
|
||||
def test_various_content_type_post(self):
|
||||
req = webob.Request.blank("/foos",
|
||||
method="POST",
|
||||
content_type="text/occi,text/plain")
|
||||
result = req.get_response(self.app)
|
||||
self.assertEqual(501, result.status_code)
|
||||
|
||||
def test_various_one_bad_content_type_post(self):
|
||||
req = webob.Request.blank("/foos",
|
||||
method="POST",
|
||||
content_type="text/bazonk,text/plain")
|
||||
result = req.get_response(self.app)
|
||||
self.assertEqual(501, result.status_code)
|
||||
|
||||
def test_various_bad_content_types_post(self):
|
||||
req = webob.Request.blank("/foos",
|
||||
method="POST",
|
||||
content_type="text/bazonk,text/foobar")
|
||||
result = req.get_response(self.app)
|
||||
self.assertEqual(406, result.status_code)
|
||||
|
||||
def test_bad_content_type_post(self):
|
||||
req = webob.Request.blank("/foos",
|
||||
method="POST",
|
||||
|
|
|
@ -48,11 +48,14 @@ class Request(webob.Request):
|
|||
if not self.should_have_body():
|
||||
return None
|
||||
|
||||
if self.content_type not in parsers.get_supported_content_types():
|
||||
LOG.debug("Unrecognized Content-Type provided in request")
|
||||
raise exception.InvalidContentType(content_type=self.content_type)
|
||||
content_types = self.content_type.split(",")
|
||||
|
||||
return self.content_type
|
||||
for ct in content_types:
|
||||
if ct in parsers.get_supported_content_types():
|
||||
return ct
|
||||
|
||||
LOG.debug("Unrecognized Content-Type provided in request")
|
||||
raise exception.InvalidContentType(content_type=self.content_type)
|
||||
|
||||
def get_best_match_content_type(self, default_match=None):
|
||||
content_types = serializers.get_supported_content_types()
|
||||
|
|
Loading…
Reference in New Issue