mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
fallback: better way of setting fallbacks, check for 'resolve_refs' method on the handler
and pass handler_dict if one exists
This commit is contained in:
parent
ca405ef179
commit
49deb501a6
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user