"""Module for json requests validation.""" from functools import wraps from flask import request from oto import response from oto.adaptors.flask import flaskify from werkzeug.exceptions import BadRequest from timed_release.constants import error def validate_json(function): """Validate json request decorator. Returns: callable: the wrapped function. """ @wraps(function) def wrapper(*args, **kw): valid_request_json = True try: data = request.get_json() if not isinstance(data, dict) or not data: valid_request_json = False except BadRequest: valid_request_json = False if not valid_request_json: return flaskify(response.create_error_response( code=error.ERROR_CODE_BAD_REQUEST, message=error.ERROR_MESSAGE_INVALID_REQUEST_BODY)) return function(*args, **kw) return wrapper