Skip to content
Snippets Groups Projects
Select Git revision
  • 9e6d9a3f884b2b566260872968c7016984543a32
  • develop default protected
  • master protected
  • feature/POL1-813-error-report-sensu-check
  • 0.22
  • 0.21
  • 0.20
  • 0.19
  • 0.18
  • 0.17
  • 0.16
  • 0.15
  • 0.14
  • 0.13
  • 0.12
  • 0.11
  • 0.10
  • 0.9
  • 0.8
  • 0.7
  • 0.6
  • 0.5
  • 0.4
  • 0.3
24 results

cli.py

Blame
  • common.py 1.45 KiB
    """
    Utilities used by multiple route blueprints.
    """
    import functools
    import logging
    from flask import request, Response
    
    logger = logging.getLogger(__name__)
    _DECODE_TYPE_XML = 'xml'
    _DECODE_TYPE_JSON = 'json'
    
    
    def require_accepts_json(f):
        """
        used as a route handler decorator to return an error
        unless the request allows responses with type "application/json"
        :param f: the function to be decorated
        :return: the decorated function
        """
        @functools.wraps(f)
        def decorated_function(*args, **kwargs):
            # TODO: use best_match to disallow */* ...?
            if not request.accept_mimetypes.accept_json:
                return Response(
                    response="response will be json",
                    status=406,
                    mimetype="text/html")
            return f(*args, **kwargs)
        return decorated_function
    
    
    def after_request(response):
        """
        Generic function to do additional logging of requests & responses.
    
        :param response:
        :return:
        """
        if response.status_code != 200:
    
            try:
                data = response.data.decode('utf-8')
            except Exception:
                # never expected to happen, but we don't want any failures here
                logging.exception('INTERNAL DECODING ERROR')
                data = 'decoding error (see logs)'
    
            logger.warning('"%s %s" "%s" %s' % (
                request.method,
                request.path,
                data,
                str(response.status_code)))
        return response