From e69527c715a4aff3e4b7da318e7dbb4079419c69 Mon Sep 17 00:00:00 2001 From: JustAnotherArchivist Date: Sat, 11 Jul 2020 20:08:54 +0000 Subject: [PATCH] Add defaultResponseHandler on the Item level --- qwarc/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/qwarc/__init__.py b/qwarc/__init__.py index e15d2b0..98f4c3f 100644 --- a/qwarc/__init__.py +++ b/qwarc/__init__.py @@ -21,6 +21,7 @@ import yarl class Item: itemType = None + defaultResponseHandler = staticmethod(qwarc.utils.handle_response_default) def __init__(self, qwarcObj, itemValue, session, headers, warc): self.qwarcObj = qwarcObj @@ -59,12 +60,12 @@ class Item: out.append((key, value)) return out - async def fetch(self, url, responseHandler = qwarc.utils.handle_response_default, method = 'GET', data = None, headers = [], verify_ssl = True, timeout = 60): + async def fetch(self, url, responseHandler = None, method = 'GET', data = None, headers = [], verify_ssl = True, timeout = 60): ''' HTTP GET or POST a URL url: str or yarl.URL - responseHandler: a callable that determines how the response is handled. See qwarc.utils.handle_response_default for details. + responseHandler: None or a callable that determines how the response is handled; if None, self.defaultResponseHandler is used. See qwarc.utils.handle_response_default for details. method: str, must be 'GET' or 'POST' data: dict or list/tuple of lists/tuples of length two or bytes or file-like or None, the data to be sent in the request body headers: list of 2-tuples, additional or overriding headers for this request only @@ -80,6 +81,8 @@ class Item: #TODO: Rewrite using 'async with self.session.get' url = yarl.URL(url) # Explicitly convert for normalisation, percent-encoding, etc. + if responseHandler is None: + responseHandler = self.defaultResponseHandler assert method in ('GET', 'POST'), 'method must be GET or POST' headers = self._merge_headers(headers) history = []