mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +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.path_resolvers = make_best_resolvers(paths)
|
||||||
self.record_loader = record_loader
|
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
|
Resolve headers and payload for a given capture
|
||||||
In the simple case, headers and payload are in the same record.
|
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)
|
cdx = CDXObject(cdx)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
(headers, stream) = resolve_loader.resolve_headers_and_payload(cdx,
|
(headers, stream) = resolve_loader(cdx, failed_files, revisit_func)
|
||||||
failed_files,
|
|
||||||
revisit_func)
|
|
||||||
print headers
|
print headers
|
||||||
sys.stdout.write(stream.readline())
|
sys.stdout.write(stream.readline())
|
||||||
sys.stdout.write(stream.readline())
|
sys.stdout.write(stream.readline())
|
||||||
|
@ -112,6 +112,12 @@ class WBHandler(SearchPageWbUrlHandler):
|
|||||||
create_template(config.get('not_found_html'),
|
create_template(config.get('not_found_html'),
|
||||||
'Not Found Error'))
|
'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')
|
cookie_maker = config.get('cookie_maker')
|
||||||
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker)
|
||||||
|
|
||||||
@ -120,10 +126,7 @@ class WBHandler(SearchPageWbUrlHandler):
|
|||||||
resolving_loader = ResolvingLoader(paths=paths,
|
resolving_loader = ResolvingLoader(paths=paths,
|
||||||
record_loader=record_loader)
|
record_loader=record_loader)
|
||||||
|
|
||||||
self.replay = ReplayView(resolving_loader, config)
|
return ReplayView(resolving_loader, config)
|
||||||
|
|
||||||
self.fallback_handler = None
|
|
||||||
self.fallback_name = config.get('fallback')
|
|
||||||
|
|
||||||
def resolve_refs(self, handler_dict):
|
def resolve_refs(self, handler_dict):
|
||||||
if self.fallback_name:
|
if self.fallback_name:
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from urlparse import urlsplit
|
from urlparse import urlsplit
|
||||||
|
|
||||||
@ -87,8 +89,9 @@ class ReplayView(object):
|
|||||||
failed_files)
|
failed_files)
|
||||||
|
|
||||||
except (CaptureException, ArchiveLoadFailed) as ce:
|
except (CaptureException, ArchiveLoadFailed) as ce:
|
||||||
import traceback
|
#import traceback
|
||||||
traceback.print_exc()
|
#traceback.print_exc()
|
||||||
|
logging.debug(ce)
|
||||||
last_e = ce
|
last_e = ce
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -131,10 +134,10 @@ class ReplayView(object):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
def replay_capture(self, wbrequest, cdx, cdx_loader, failed_files):
|
def replay_capture(self, wbrequest, cdx, cdx_loader, failed_files):
|
||||||
(status_headers, stream) = (self.content_loader.
|
(status_headers, stream) = (self.content_loader(cdx,
|
||||||
resolve_headers_and_payload(cdx,
|
failed_files,
|
||||||
failed_files,
|
cdx_loader,
|
||||||
cdx_loader))
|
wbrequest))
|
||||||
|
|
||||||
# check and reject self-redirect
|
# check and reject self-redirect
|
||||||
self._reject_self_redirect(wbrequest, cdx, status_headers)
|
self._reject_self_redirect(wbrequest, cdx, status_headers)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user