Merged REQUEST and request method and start to remove redundant code

remaining from the previous interface.
This commit is contained in:
Chuddah 2020-02-23 14:57:53 +00:00
commit 873750632a

View file

@ -65,56 +65,39 @@ class HTTP(object):
return string return string
def REQUEST(self, url, type, params=None, json=None, session=None, \
headers=None, verify=None, timeout=None, retry=None):
config = self.config.data
data = {'url': url, 'type': type}
if params is not None:
data['params'] = params
if json is not None:
data['json'] = json
if headers is not None:
data['headers'] = headers
if timeout is not None:
data['timeout'] = timeout
if verify is not None:
data['verify'] = verify
if retry is not None:
data['retry'] = retry
if json is not None:
data['json'] = json
return self.request(config, data, session)
def get_handler_url(self, handler): def get_handler_url(self, handler):
server = self.config.data.get("auth.server", "") server = self.config.data.get("auth.server", "")
return "%s/%s" % (server, handler) return "%s/%s" % (server, handler)
def request(self, config, data, session=None): def REQUEST(self, url, type, params=None, json=None, session=None, \
headers=None, verify=None, timeout=None, retry=None):
config = self.config.data
''' Give a chance to retry the connection. Jellyfin sometimes can be slow to answer back url = self._replace_user_info(url)
data dictionary can contain: data = {}
type: GET, POST, etc. if params is not None:
url: (optional) data['params'] = params
handler: not considered when url is provided (optional) if json is not None:
params: request parameters (optional) data['json'] = json
json: request body (optional)
headers: (optional), headers = headers if headers is not None else {}
verify: ssl certificate, True (verify using device built-in library) or False retry = retry if retry is not None else 5
''' timeout = timeout if timeout is not None else config['http.timeout']
if not data: verify = verify if verify is not None else config.get('auth.ssl', False)
raise AttributeError("Request cannot be empty")
headers = self._get_header(config, headers)
self._process_params(data.get('params') or {})
self._process_params(data.get('json') or {})
data = self._request(config, data)
LOG.debug("--->[ http ] %s", JsonDebugPrinter(data)) LOG.debug("--->[ http ] %s", JsonDebugPrinter(data))
retry = data.pop('retry', 5)
while True: while True:
try: try:
r = self._requests(session or self.session or requests, data.pop('type', "GET"), **data) r = self._requests(session or self.session or requests, type,
url=url, headers=headers, verify=verify, timeout=timeout, **data)
r.content # release the connection r.content # release the connection
if not self.keep_alive and self.session is not None: if not self.keep_alive and self.session is not None:
@ -196,21 +179,6 @@ class HTTP(object):
except ValueError: except ValueError:
return return
def _request(self, config, data):
if 'url' not in data:
data['url'] = "%s/%s" % (config.get("auth.server", ""), data.pop('handler', ""))
headers = self._get_header(config, data.get('headers', {}))
data['headers'] = headers
data['timeout'] = data.get('timeout') or config['http.timeout']
data['verify'] = data.get('verify') or config.get('auth.ssl', False)
data['url'] = self._replace_user_info(data['url'])
self._process_params(data.get('params') or {})
self._process_params(data.get('json') or {})
return data
def _process_params(self, params): def _process_params(self, params):
for key in params: for key in params: