# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.

import json

def json_response(func):
    """ Translates results of 'func' into a JSON response. """
    def wrap(*a, **kw):
        (code, data) = func(*a, **kw)
        json_data = json.dumps(data)
        return (code, { 'Content-type': 'application/json',
                        'Content-Length': len(json_data) }, json_data)

    return wrap
