Source code for elastichq.common.api_response

"""
.. module:: apiresponse

.. moduleauthor:: Roy Russo <royrusso.gmail.com>
"""

import time

from flask import g

from .status_codes import HTTP_Status
from ..api import api


[docs]def APIResponse(data, status_code=HTTP_Status.OK, headers=None, message=None): """ Uniform response envelope :param data: Typically an array of dicts to be returned in the JSON output :param status_code: An HTTP code :param headers: :param message: If an error or success message is added. :return: A Flask-RESTFul response """ if not isinstance(data, (list)): data = [data] diff = int((time.time() - g.start_request_timestamp) * 1000) formatted_response = {'data': data, 'status_code': status_code, 'message': message, 'response_time': diff} response = api.make_response(formatted_response, status_code) response.headers.add('Status', status_code) if headers is not None: response.headers.extend(headers) return response