diff --git a/pywb/webapp/handlers.py b/pywb/webapp/handlers.py index 4a8466d7..5c227b9f 100644 --- a/pywb/webapp/handlers.py +++ b/pywb/webapp/handlers.py @@ -8,13 +8,15 @@ from pywb.utils.loaders import BlockLoader from pywb.framework.basehandlers import BaseHandler, WbUrlHandler from pywb.framework.wbrequestresponse import WbResponse +import logging + #================================================================= # Standard WB Handler #================================================================= class WBHandler(WbUrlHandler): def __init__(self, index_reader, replay, - search_view=None, config=None, handler_dict=None): + search_view=None, config=None): self.index_reader = index_reader @@ -23,11 +25,11 @@ class WBHandler(WbUrlHandler): self.search_view = search_view self.fallback_handler = None + self.fallback_name = config.get('fallback') - if handler_dict: - fallback = config.get('fallback') - if fallback: - self.fallback_handler = handler_dict.get(fallback) + def resolve_refs(self, handler_dict): + if self.fallback_name: + self.fallback_handler = handler_dict.get(self.fallback_name) def __call__(self, wbrequest): if wbrequest.wb_url_str == '/': @@ -58,8 +60,6 @@ class WBHandler(WbUrlHandler): raise return self.fallback_handler(wbrequest) - #new_url = (self.redir_fallback + wbrequest.wb_url.to_str(timestamp='')) - #return WbResponse.redir_response(new_url) def render_search_page(self, wbrequest, **kwargs): if self.search_view: diff --git a/pywb/webapp/pywb_init.py b/pywb/webapp/pywb_init.py index ffa2101b..fb77d211 100644 --- a/pywb/webapp/pywb_init.py +++ b/pywb/webapp/pywb_init.py @@ -62,7 +62,7 @@ class DictChain: #================================================================= -def create_wb_handler(query_handler, config, handler_dict={}): +def create_wb_handler(query_handler, config): cookie_maker = config.get('cookie_maker') record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker) @@ -89,7 +89,6 @@ def create_wb_handler(query_handler, config, handler_dict={}): replayer, search_view=search_view, config=config, - handler_dict=handler_dict, ) return wb_handler @@ -207,7 +206,6 @@ def create_wb_router(passed_config={}): wb_handler = create_wb_handler( query_handler=query_handler, config=route_config, - handler_dict=handler_dict, ) handler_dict[name] = wb_handler @@ -237,6 +235,12 @@ def create_wb_router(passed_config={}): for static_name, static_path in static_routes.iteritems(): routes.append(Route(static_name, StaticHandler(static_path))) + # resolve any cross handler references + for route in routes: + if hasattr(route.handler, 'resolve_refs'): + route.handler.resolve_refs(handler_dict) + + # Check for new proxy mode! if config.get('enable_http_proxy', False): router = ProxyArchivalRouter