summaryrefslogtreecommitdiff
path: root/indra/lib
diff options
context:
space:
mode:
Diffstat (limited to 'indra/lib')
-rw-r--r--indra/lib/python/indra/base/llsd.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/indra/lib/python/indra/base/llsd.py b/indra/lib/python/indra/base/llsd.py
index cc18dec268..9e636ea423 100644
--- a/indra/lib/python/indra/base/llsd.py
+++ b/indra/lib/python/indra/base/llsd.py
@@ -842,6 +842,16 @@ try:
except:
print "Couldn't import mulib.stacked, not registering LLSD converters"
else:
+ def llsd_convert_json(llsd_stuff, request):
+ callback = request.get_header('callback')
+ if callback is not None:
+ ## See Yahoo's ajax documentation for information about using this
+ ## callback style of programming
+ ## http://developer.yahoo.com/common/json.html#callbackparam
+ req.write("%s(%s)" % (callback, simplejson.dumps(llsd_stuff)))
+ else:
+ req.write(simplejson.dumps(llsd_stuff))
+
def llsd_convert_xml(llsd_stuff, request):
request.write(format_xml(llsd_stuff))
@@ -849,6 +859,8 @@ else:
request.write(format_binary(llsd_stuff))
for typ in [LLSD, dict, list, tuple, str, int, float, bool, unicode, type(None)]:
+ stacked.add_producer(typ, llsd_convert_json, 'application/json')
+
stacked.add_producer(typ, llsd_convert_xml, 'application/llsd+xml')
stacked.add_producer(typ, llsd_convert_xml, 'application/xml')
stacked.add_producer(typ, llsd_convert_xml, 'text/xml')