diff options
Diffstat (limited to 'indra/lib')
| -rw-r--r-- | indra/lib/python/indra/base/llsd.py | 12 | 
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') | 
