示例#1
0
    def wrapper(method=''):

        response_obj, status_code = site.dispatch(request, method)
        if isinstance(response_obj, Response):
           return response_obj, response_obj.status_code
        is_batch = type(response_obj) is list

        # Write all responses to a jsonfile in the /tmp directory
        import time, json, ast
        from copy import copy, deepcopy

        filename = f"/tmp/{str(time.time())}"

        with open(f"{filename}_request.json", "w") as file:
            request_string = extract_raw_data_request(request).\
                replace("\'","\"").\
                replace("None", "\'\'").\
                replace("True","true").\
                replace("False","false").\
                replace("\"\"\"\"", "\"\'\'\"")

            # Wo don't need to log empty requests (OPTIONS/CORS)
            if request_string != "":

                json_object = json.loads(request_string)

                # for field_name, field in json_object.items():
                #     cleanup_non_serializable_fields(field_name, field)

                file.write(json.dumps(json_object, indent=4, sort_keys=True))

        with open(f"{filename}_response.json", "w") as file:

            # It is possible that we receive a an error message with stacktrace
            # from an external library (eg Flask), This stacktrace is possibly
            # not correctly quoted for json. So we need to replace double quotes
            # for single quotes.

            if "error" in response_obj and "stack" in response_obj["error"]["message"]:
                response_obj["error"]["message"]["stack"].replace("\"","'")

            # Log the response object

            # Cleanup all Non-Serializable fields (cast them to string)
            if "result" in response_obj and type(response_obj["result"]) is dict:
                for field_name, field in response_obj.items():
                    field = cleanup_non_serializable_fields(field_name, field)

            elif "result" in response_obj and type(response_obj["result"]) is list:
                for index, list_item in enumerate(copy(response_obj["result"])):
                    for field_name, field in copy(list_item).items():
                        response_obj["result"][index][field_name] = cleanup_non_serializable_fields(field_name, field)

            file.write(json.dumps(response_obj, indent=4, sort_keys=True))

        if current_app.config['DEBUG']:
            logging.debug('request: %s', extract_raw_data_request(request))
            logging.debug('response: %s, %s', status_code, response_obj)

        return jsonify_status_code(status_code, response_obj, is_batch=is_batch), status_code
示例#2
0
def _site_api(method=''):
    response_dict, status_code = default_site.dispatch(request, method)
    if current_app.config['DEBUG']:
        print('\n ++ data request')
        print('>> request: {0}'.format(extract_raw_data_request(request)))
        print('<< response: {0}, {1}'.format(status_code, response_dict))
    return jsonify_status_code(status_code, response_dict), status_code
示例#3
0
def _site_api(method=""):
    response_dict, status_code = default_site.dispatch(request, method)
    if current_app.config["DEBUG"]:
        print("\n ++ data request")
        print(">> request: {0}".format(extract_raw_data_request(request)))
        print("<< response: {0}, {1}".format(status_code, response_dict))
    return jsonify_status_code(status_code, response_dict), status_code
示例#4
0
def _site_api(method=''):
    response_dict, status_code = default_site.dispatch(request, method)
    if current_app.config['DEBUG']:
        print '\n ++ data request'
        print '>> request: {0}'.format(extract_raw_data_request(request))
        print '<< response: {0}, {1}'.format(status_code, response_dict)
    return jsonify_status_code(status_code, response_dict), status_code
示例#5
0
 def wrapper(method=''):
     response_dict, status_code = (yield from
                                   site.dispatch(request, method))
     if current_app.config['DEBUG']:
         logging.debug('request: %s', extract_raw_data_request(request))
         logging.debug('response: %s, %s', status_code, response_dict)
     return jsonify_status_code(status_code, response_dict), status_code
示例#6
0
 def wrapper(method=''):
     response_dict, status_code = site.dispatch(request, method)
     if current_app.config['DEBUG']:
         logging.debug('request: {0}'.format(
             extract_raw_data_request(request)))
         logging.debug(
             'response: {0}, {1}'.format(status_code, response_dict))
     return jsonify_status_code(status_code, response_dict), status_code
示例#7
0
 def wrapper(method=''):
     response_obj, status_code = site.dispatch(request, method)
     if isinstance(response_obj, Response):
        return response_obj, response_obj.status_code
     is_batch = type(response_obj) is list
     if current_app.config['DEBUG']:
         logging.debug('request: %s', extract_raw_data_request(request))
         logging.debug('response: %s, %s', status_code, response_obj)
     return jsonify_status_code(status_code, response_obj, is_batch=is_batch), status_code
示例#8
0
 def wrapper(method=''):
     response_dict, status_code = (yield from site.dispatch(request, method))
     if current_app.config['DEBUG']:
         logging.debug('request: %s', extract_raw_data_request(request))
         logging.debug('response: %s, %s', status_code, response_dict)
     return jsonify_status_code(status_code, response_dict), status_code