mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +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.basehandlers import BaseHandler, WbUrlHandler
|
||||||
from pywb.framework.wbrequestresponse import WbResponse
|
from pywb.framework.wbrequestresponse import WbResponse
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
#=================================================================
|
#=================================================================
|
||||||
# Standard WB Handler
|
# Standard WB Handler
|
||||||
#=================================================================
|
#=================================================================
|
||||||
class WBHandler(WbUrlHandler):
|
class WBHandler(WbUrlHandler):
|
||||||
def __init__(self, index_reader, replay,
|
def __init__(self, index_reader, replay,
|
||||||
search_view=None, config=None, handler_dict=None):
|
search_view=None, config=None):
|
||||||
|
|
||||||
self.index_reader = index_reader
|
self.index_reader = index_reader
|
||||||
|
|
||||||
@ -23,11 +25,11 @@ class WBHandler(WbUrlHandler):
|
|||||||
self.search_view = search_view
|
self.search_view = search_view
|
||||||
|
|
||||||
self.fallback_handler = None
|
self.fallback_handler = None
|
||||||
|
self.fallback_name = config.get('fallback')
|
||||||
|
|
||||||
if handler_dict:
|
def resolve_refs(self, handler_dict):
|
||||||
fallback = config.get('fallback')
|
if self.fallback_name:
|
||||||
if fallback:
|
self.fallback_handler = handler_dict.get(self.fallback_name)
|
||||||
self.fallback_handler = handler_dict.get(fallback)
|
|
||||||
|
|
||||||
def __call__(self, wbrequest):
|
def __call__(self, wbrequest):
|
||||||
if wbrequest.wb_url_str == '/':
|
if wbrequest.wb_url_str == '/':
|
||||||
@ -58,8 +60,6 @@ class WBHandler(WbUrlHandler):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
return self.fallback_handler(wbrequest)
|
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):
|
def render_search_page(self, wbrequest, **kwargs):
|
||||||
if self.search_view:
|
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')
|
cookie_maker = config.get('cookie_maker')
|
||||||
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
||||||
@ -89,7 +89,6 @@ def create_wb_handler(query_handler, config, handler_dict={}):
|
|||||||
replayer,
|
replayer,
|
||||||
search_view=search_view,
|
search_view=search_view,
|
||||||
config=config,
|
config=config,
|
||||||
handler_dict=handler_dict,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return wb_handler
|
return wb_handler
|
||||||
@ -207,7 +206,6 @@ def create_wb_router(passed_config={}):
|
|||||||
wb_handler = create_wb_handler(
|
wb_handler = create_wb_handler(
|
||||||
query_handler=query_handler,
|
query_handler=query_handler,
|
||||||
config=route_config,
|
config=route_config,
|
||||||
handler_dict=handler_dict,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
handler_dict[name] = wb_handler
|
handler_dict[name] = wb_handler
|
||||||
@ -237,6 +235,12 @@ def create_wb_router(passed_config={}):
|
|||||||
for static_name, static_path in static_routes.iteritems():
|
for static_name, static_path in static_routes.iteritems():
|
||||||
routes.append(Route(static_name, StaticHandler(static_path)))
|
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!
|
# Check for new proxy mode!
|
||||||
if config.get('enable_http_proxy', False):
|
if config.get('enable_http_proxy', False):
|
||||||
router = ProxyArchivalRouter
|
router = ProxyArchivalRouter
|
||||||
|
Loading…
x
Reference in New Issue
Block a user