Browse Source

Add defaultResponseHandler on the Item level

master
JustAnotherArchivist 3 years ago
parent
commit
e69527c715
1 changed files with 5 additions and 2 deletions
  1. +5
    -2
      qwarc/__init__.py

+ 5
- 2
qwarc/__init__.py View File

@@ -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 = []


Loading…
Cancel
Save