def http_error_middleware_factory(options): """ HTTP error middleware factory. """ import logging if 'http_errors' in options: path_for = options['path_for'] error_mapping = options['http_errors'] assert isinstance(error_mapping, defaultdict) assert path_for(error_mapping.default_factory()) is not None for route_name in error_mapping.values(): assert path_for(route_name) is not None else: error_mapping = defaultdict(str) if 'http_errors_logger' in options: logger = options['http_errors_logger'] else: logger = logging.getLogger('unhandled') if not logger.handlers: logger.setLevel(logging.ERROR) logger.addHandler(logging.StreamHandler(sys.stderr)) return HTTPErrorMiddleware( error_mapping, logger, options.get('http_errors_extra_provider', None), )
def test_http_errors(self): """ http_errors. """ from wheezy.core.collections import defaultdict from wheezy.web.middleware.errors import http_error_middleware_factory mock_path_for = Mock() middleware = http_error_middleware_factory({ 'path_for': mock_path_for, 'http_errors': defaultdict(lambda: 'http500', { 404: 'http400' }) }) assert middleware
# HTTPErrorMiddleware if config.get('runtime', 'unhandled') == 'stderr': handler = logging.StreamHandler(sys.stderr) else: raise NotImplementedError(mode) handler.setFormatter(logging.Formatter(ERROR_REPORT_FORMAT)) handler.setLevel(logging.ERROR) unhandled_logger = logging.getLogger('unhandled') unhandled_logger.setLevel(logging.ERROR) unhandled_logger.addHandler(handler) options.update({ 'http_errors': defaultdict(lambda: 'http500', { # HTTP status code: route name 400: 'http400', 403: 'http403', 404: 'http404', 500: 'http500', }), 'http_errors_logger': unhandled_logger, 'http_errors_extra_provider': error_report_extra_provider }) # Template Engine searchpath = ['content/templates'] engine = Engine( loader=FileLoader(searchpath), extensions=[ CoreExtension(token_start='#') ] )
) else: raise NotImplementedError(mode) handler.setFormatter(logging.Formatter(ERROR_REPORT_FORMAT)) handler = OnePassHandler(handler, cache, timedelta(hours=12)) handler.setLevel(logging.ERROR) unhandled_logger = logging.getLogger("unhandled") unhandled_logger.setLevel(logging.ERROR) unhandled_logger.addHandler(handler) options.update( { "http_errors": defaultdict( lambda: "http500", { # HTTP status code: route name 400: "http400", 403: "http403", 404: "http404", 500: "http500", }, ), "http_errors_logger": unhandled_logger, "http_errors_extra_provider": error_report_extra_provider, } ) # Template Engine def runtime_engine_factory(loader): engine = Engine(loader=loader, extensions=[CoreExtension(), WidgetExtension(), WhitespaceExtension()]) engine.global_vars.update({"format_value": format_value, "h": html_escape}) return engine
if config.get('runtime', 'unhandled') == 'stderr': handler = logging.StreamHandler(sys.stderr) else: raise NotImplementedError(mode) handler.setFormatter(logging.Formatter(ERROR_REPORT_FORMAT)) handler.setLevel(logging.ERROR) unhandled_logger = logging.getLogger('unhandled') unhandled_logger.setLevel(logging.ERROR) unhandled_logger.addHandler(handler) options.update({ 'http_errors': defaultdict( lambda: 'http500', { # HTTP status code: route name 400: 'http400', 403: 'http403', 404: 'http404', 500: 'http500', }), 'http_errors_logger': unhandled_logger, 'http_errors_extra_provider': error_report_extra_provider }) # Template Engine searchpath = ['content/templates'] engine = Engine(loader=FileLoader(searchpath), extensions=[CoreExtension(token_start='#')]) engine.global_vars.update({'__version__': __version__})
'CRYPTO_ENCRYPTION_KEY': '_WsoFT.AbI+asdfJ', 'CRYPTO_VALIDATION_KEY': 'Lf9awLiLAD_SD+ih' }) options.update({ 'ticket': Ticket( max_age=1200, salt='Hksdf_df1lka+lA', digestmod=sha1), 'AUTH_COOKIE': '_a', 'AUTH_COOKIE_DOMAIN': None, 'AUTH_COOKIE_PATH': '', 'AUTH_COOKIE_SECURE': False, }) options['http_errors'] = defaultdict(lambda: 'http500', { # HTTP status code: route name 400: 'http400', 401: 'signin', 403: 'http403', 404: 'http404', 500: 'http500', })