Changeset View
Changeset View
Standalone View
Standalone View
swh/lister/core/lister_transports.py
Show First 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | class ListerHttpTransport(abc.ABC): | ||||
def request_uri(self, identifier): | def request_uri(self, identifier): | ||||
"""Get the full request URI given the transport_request identifier. | """Get the full request URI given the transport_request identifier. | ||||
MAY BE OVERRIDDEN if something more complex than the PATH_TEMPLATE is | MAY BE OVERRIDDEN if something more complex than the PATH_TEMPLATE is | ||||
required. | required. | ||||
""" | """ | ||||
path = self.PATH_TEMPLATE % identifier | path = self.PATH_TEMPLATE % identifier | ||||
return self.api_baseurl + path | return self.url + path | ||||
def request_params(self, identifier): | def request_params(self, identifier): | ||||
"""Get the full parameters passed to requests given the | """Get the full parameters passed to requests given the | ||||
transport_request identifier. | transport_request identifier. | ||||
This uses credentials if any are provided (see | This uses credentials if any are provided (see | ||||
request_instance_credentials). | request_instance_credentials). | ||||
Show All 29 Lines | def transport_quota_check(self, response): | ||||
# might be http-date | # might be http-date | ||||
at_date = datetime(*parsedate(retry_after)[:6]) | at_date = datetime(*parsedate(retry_after)[:6]) | ||||
from_now = (at_date - datetime.today()).total_seconds() + 5 | from_now = (at_date - datetime.today()).total_seconds() + 5 | ||||
return True, max(0, from_now) | return True, max(0, from_now) | ||||
else: # response ok | else: # response ok | ||||
self.reset_backoff() | self.reset_backoff() | ||||
return False, 0 | return False, 0 | ||||
def __init__(self, api_baseurl=None): | def __init__(self, url=None): | ||||
if not api_baseurl: | if not url: | ||||
api_baseurl = self.config.get('api_baseurl') | url = self.config.get('url') | ||||
if not api_baseurl: | if not url: | ||||
api_baseurl = self.DEFAULT_URL | url = self.DEFAULT_URL | ||||
if not api_baseurl: | if not url: | ||||
raise NameError('HTTP Lister Transport requires api_baseurl.') | raise NameError('HTTP Lister Transport requires an url.') | ||||
self.api_baseurl = api_baseurl # eg. 'https://api.github.com' | self.url = url # eg. 'https://api.github.com' | ||||
self.session = requests.Session() | self.session = requests.Session() | ||||
self.lister_version = __version__ | self.lister_version = __version__ | ||||
def _transport_action(self, identifier, method='get'): | def _transport_action(self, identifier, method='get'): | ||||
"""Permit to ask information to the api prior to actually executing | """Permit to ask information to the api prior to actually executing | ||||
query. | query. | ||||
""" | """ | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | """Leverage requests library to retrieve basic html page and parse | ||||
To be used in conjunction with ListerBase or a subclass of it. | To be used in conjunction with ListerBase or a subclass of it. | ||||
""" | """ | ||||
PAGE = AbstractAttribute("The server api's unique page to retrieve and " | PAGE = AbstractAttribute("The server api's unique page to retrieve and " | ||||
"parse for information") | "parse for information") | ||||
PATH_TEMPLATE = None # we do not use it | PATH_TEMPLATE = None # we do not use it | ||||
def __init__(self, api_baseurl=None): | def __init__(self, url=None): | ||||
self.session = requests.Session() | self.session = requests.Session() | ||||
self.lister_version = __version__ | self.lister_version = __version__ | ||||
def request_uri(self, _): | def request_uri(self, _): | ||||
"""Get the full request URI given the transport_request identifier. | """Get the full request URI given the transport_request identifier. | ||||
""" | """ | ||||
return self.PAGE | return self.PAGE |