def __init__(self, query_handler, config=None): super(WBHandler, self).__init__(config) self.index_reader = query_handler cookie_maker = config.get('cookie_maker') record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker) paths = config.get('archive_paths') 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')
class WBHandler(SearchPageWbUrlHandler): def __init__(self, query_handler, config=None): super(WBHandler, self).__init__(config) self.index_reader = query_handler cookie_maker = config.get('cookie_maker') record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker) paths = config.get('archive_paths') 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') def resolve_refs(self, handler_dict): if self.fallback_name: self.fallback_handler = handler_dict.get(self.fallback_name) def handle_request(self, wbrequest): try: cdx_lines, output = self.index_reader.load_for_request(wbrequest) except NotFoundException as nfe: return self.handle_not_found(wbrequest, nfe) if output != 'text' and wbrequest.wb_url.is_replay(): return self.handle_replay(wbrequest, cdx_lines) else: return self.handle_query(wbrequest, cdx_lines, output) def handle_query(self, wbrequest, cdx_lines, output): return self.index_reader.make_cdx_response(wbrequest, cdx_lines, output) def handle_replay(self, wbrequest, cdx_lines): cdx_callback = self.index_reader.cdx_load_callback(wbrequest) return self.replay.render_content(wbrequest, cdx_lines, cdx_callback) def handle_not_found(self, wbrequest, nfe): if (not self.fallback_handler or wbrequest.wb_url.is_query() or wbrequest.wb_url.is_identity): raise return self.fallback_handler(wbrequest) def __str__(self): return 'Web Archive Replay Handler'
def _init_replay_view(self, config): cookie_maker = config.get('cookie_maker') record_loader = ArcWarcRecordLoader(cookie_maker=cookie_maker) paths = config.get('archive_paths') resolving_loader = ResolvingLoader(paths=paths, record_loader=record_loader) return ReplayView(resolving_loader, config)