1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 r"""Support for converting responses to JSON formats.
21
22 """
23 __docformat__ = "restructuredtext en"
24
25 have_json = False
26 try:
27
28 import json
29 if hasattr(json, 'dumps'):
30 have_json = True
31 else:
32 del json
33 except ImportError:
34 pass
35 if not have_json:
36 import simplejson as json
37
38 from application import JsonResponse
39 from wsgisupport import Response
40
41 -def convert_to_json(request, response, props,
42 content_type="application/json"):
43 """Convert a response to JSON.
44
45 The supplied content type will be overridden by any type set in the
46 response object.
47
48 """
49 jsonobj = response
50 status = 200
51
52 if isinstance(response, JsonResponse):
53 jsonobj = response.jsonobj
54 if response.status_code is not None:
55 status = response.status_code
56 if response.content_type is not None:
57 content_type = response.content_type
58
59 return Response(json.dumps(jsonobj), status, content_type)
60
62 """Convert a response to JSONP, according to the props.
63
64 """
65
66
67
68 response = convert_to_json(request, response, props,
69 content_type='text/javacsript')
70
71 paramname = props['return_JSONP_paramname']
72 jsonp = request.validated.get(paramname)
73 if jsonp != '':
74 response.body = jsonp + '(' + response.body + ')'
75 return response
76
77 -def parse_json_body(request):
78 """Parse json in a request body.
79
80 """
81 request.json = json.loads(request.raw_post_data)
82
83
84