Refs #30451 -- Added HttpRequest._set_content_type_params() hook.

This commit is contained in:
Mariusz Felisiak 2019-06-13 10:11:41 +02:00 committed by Andrew Godwin
parent 87f5d07eed
commit 415e899dc4
2 changed files with 15 additions and 10 deletions

View File

@ -1,5 +1,3 @@
import cgi
import codecs
import re import re
from io import BytesIO from io import BytesIO
@ -80,14 +78,8 @@ class WSGIRequest(HttpRequest):
self.META['PATH_INFO'] = path_info self.META['PATH_INFO'] = path_info
self.META['SCRIPT_NAME'] = script_name self.META['SCRIPT_NAME'] = script_name
self.method = environ['REQUEST_METHOD'].upper() self.method = environ['REQUEST_METHOD'].upper()
self.content_type, self.content_params = cgi.parse_header(environ.get('CONTENT_TYPE', '')) # Set content_type, content_params, and encoding.
if 'charset' in self.content_params: self._set_content_type_params(environ)
try:
codecs.lookup(self.content_params['charset'])
except LookupError:
pass
else:
self.encoding = self.content_params['charset']
try: try:
content_length = int(environ.get('CONTENT_LENGTH')) content_length = int(environ.get('CONTENT_LENGTH'))
except (ValueError, TypeError): except (ValueError, TypeError):

View File

@ -1,3 +1,5 @@
import cgi
import codecs
import copy import copy
import re import re
from io import BytesIO from io import BytesIO
@ -69,6 +71,17 @@ class HttpRequest:
def headers(self): def headers(self):
return HttpHeaders(self.META) return HttpHeaders(self.META)
def _set_content_type_params(self, meta):
"""Set content_type, content_params, and encoding."""
self.content_type, self.content_params = cgi.parse_header(meta.get('CONTENT_TYPE', ''))
if 'charset' in self.content_params:
try:
codecs.lookup(self.content_params['charset'])
except LookupError:
pass
else:
self.encoding = self.content_params['charset']
def _get_raw_host(self): def _get_raw_host(self):
""" """
Return the HTTP host using the environment or request headers. Skip Return the HTTP host using the environment or request headers. Skip