Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

Commit 8145f27

Browse files
committed
Add support to 'application/json' Content-Type body reporting.
1 parent 585be74 commit 8145f27

1 file changed

Lines changed: 29 additions & 3 deletions

File tree

raven/contrib/flask.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)