@@ -170,18 +170,44 @@ def get_user_info(self, request):
170170 return user_info
171171
172172 def get_http_info (self , request ):
173+ """
174+ Redirect HTTP info to get data from request.data instead.
175+ """
176+ headers = dict (get_headers (request .environ ))
177+
178+ retriever = self .get_form_data
179+
180+ if self .is_json_type (headers ['Content-Type' ]):
181+ retriever = self .get_json_data
182+
183+ return self .get_http_info_with_retriever (request , retriever )
184+
185+ def is_json_type (self , content_type ):
186+ return content_type == 'application/json'
187+
188+ def get_form_data (self , request ):
189+ return request .form
190+
191+ def get_json_data (self , request ):
192+ return request .data
193+
194+ def get_http_info_with_retriever (self , request ,
195+ retriever = get_form_data ):
196+ """
197+ Exact method for getting http_info but with form data work around.
198+ """
173199 urlparts = _urlparse .urlsplit (request .url )
174200
175201 try :
176- formdata = request . form
202+ data = retriever ( request )
177203 except ClientDisconnected :
178- formdata = {}
204+ data = {}
179205
180206 return {
181207 'url' : '%s://%s%s' % (urlparts .scheme , urlparts .netloc , urlparts .path ),
182208 'query_string' : urlparts .query ,
183209 'method' : request .method ,
184- 'data' : formdata ,
210+ 'data' : data ,
185211 'headers' : dict (get_headers (request .environ )),
186212 'env' : dict (get_environ (request .environ )),
187213 }
0 commit comments