mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 08:04:49 +01:00
replay api: make ReplayView overridable in WBHandler subclass,
allow custom content loader callable
This commit is contained in:
parent
7e017fd85e
commit
757345d317
@ -9,7 +9,7 @@ class ResolvingLoader:
|
||||
self.path_resolvers = make_best_resolvers(paths)
|
||||
self.record_loader = record_loader
|
||||
|
||||
def resolve_headers_and_payload(self, cdx, failed_files, cdx_loader):
|
||||
def __call__(self, cdx, failed_files, cdx_loader, *args):
|
||||
"""
|
||||
Resolve headers and payload for a given capture
|
||||
In the simple case, headers and payload are in the same record.
|
||||
|
@ -357,9 +357,7 @@ def load_from_cdx_test(cdx, revisit_func=load_orig_cdx, reraise=False,
|
||||
cdx = CDXObject(cdx)
|
||||
|
||||
try:
|
||||
(headers, stream) = resolve_loader.resolve_headers_and_payload(cdx,
|
||||
failed_files,
|
||||
revisit_func)
|
||||
(headers, stream) = resolve_loader(cdx, failed_files, revisit_func)
|
||||
print headers
|
||||
sys.stdout.write(stream.readline())
|
||||
sys.stdout.write(stream.readline())
|
||||
|
@ -112,6 +112,12 @@ class WBHandler(SearchPageWbUrlHandler):
|
||||
create_template(config.get('not_found_html'),
|
||||
'Not Found Error'))
|
||||
|
||||
self.replay = self._init_replay_view(config)
|
||||
|
||||
self.fallback_handler = None
|
||||
self.fallback_name = config.get('fallback')
|
||||
|
||||
def _init_replay_view(self, config):
|
||||
cookie_maker = config.get('cookie_maker')
|
||||
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
||||
|
||||
@ -120,10 +126,7 @@ class WBHandler(SearchPageWbUrlHandler):
|
||||
resolving_loader = ResolvingLoader(paths=paths,
|
||||
record_loader=record_loader)
|
||||
|
||||
self.replay = ReplayView(resolving_loader, config)
|
||||
|
||||
self.fallback_handler = None
|
||||
self.fallback_name = config.get('fallback')
|
||||
return ReplayView(resolving_loader, config)
|
||||
|
||||
def resolve_refs(self, handler_dict):
|
||||
if self.fallback_name:
|
||||
|
@ -1,4 +1,6 @@
|
||||
import re
|
||||
import logging
|
||||
|
||||
from io import BytesIO
|
||||
from urlparse import urlsplit
|
||||
|
||||
@ -87,8 +89,9 @@ class ReplayView(object):
|
||||
failed_files)
|
||||
|
||||
except (CaptureException, ArchiveLoadFailed) as ce:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
#import traceback
|
||||
#traceback.print_exc()
|
||||
logging.debug(ce)
|
||||
last_e = ce
|
||||
pass
|
||||
|
||||
@ -131,10 +134,10 @@ class ReplayView(object):
|
||||
return response
|
||||
|
||||
def replay_capture(self, wbrequest, cdx, cdx_loader, failed_files):
|
||||
(status_headers, stream) = (self.content_loader.
|
||||
resolve_headers_and_payload(cdx,
|
||||
failed_files,
|
||||
cdx_loader))
|
||||
(status_headers, stream) = (self.content_loader(cdx,
|
||||
failed_files,
|
||||
cdx_loader,
|
||||
wbrequest))
|
||||
|
||||
# check and reject self-redirect
|
||||
self._reject_self_redirect(wbrequest, cdx, status_headers)
|
||||
|
Loading…
x
Reference in New Issue
Block a user