def decorated_service(*args, **kwargs): try: current_app.logger.info(get_form_from_request(request)) except OSError as e: # don't crash if request can't be logged (e.g. [Errno 90] Message too long) current_app.logger.info(e) response = fn(*args, **kwargs) # expects flask response object if not ( hasattr(response, "json") and hasattr(response, "headers") and hasattr(response, "status_code") ): current_app.logger.warning( "Response is not a Flask response object. I did not assign a response type." ) return response data = response.json headers = dict( zip(Headers.keys(response.headers), Headers.values(response.headers)) ) status_code = response.status_code if "type" in data: current_app.logger.warning( "Response already contains 'type' key. I did not assign a new response type." ) else: data["type"] = response_type headers.pop("content-length", None) headers.pop("Content-Length", None) return data, status_code, headers