diff --git a/jellyfin_kodi/downloader.py b/jellyfin_kodi/downloader.py index 3b734deb..a0fccab4 100644 --- a/jellyfin_kodi/downloader.py +++ b/jellyfin_kodi/downloader.py @@ -41,21 +41,21 @@ def browse_info(): ) -def _http(action, url, request={}, server_id=None): - request.update({'url': url, 'type': action}) - return Jellyfin(server_id).http.request(request) - - def _get(handler, params=None, server_id=None): - return _http("GET", get_jellyfinserver_url(handler), {'params': params}, server_id) - + url = get_jellyfinserver_url(handler) + jf = Jellyfin(server_id) + return jf.http.REQUEST(url, "GET", params) def _post(handler, json=None, params=None, server_id=None): - return _http("POST", get_jellyfinserver_url(handler), {'params': params, 'json': json}, server_id) + url = get_jellyfinserver_url(handler) + jf = Jellyfin(server_id) + return jf.http.REQUEST(url, "POST", params, json) def _delete(handler, params=None, server_id=None): - return _http("DELETE", get_jellyfinserver_url(handler), {'params': params}, server_id) + url = get_jellyfinserver_url(handler) + jf = Jellyfin(server_id) + return jf.http.REQUEST(url, "DELETE", params) def validate_view(library_id, item_id): @@ -314,17 +314,14 @@ class GetItemWorker(threading.Thread): return - request = { - 'type': "GET", - 'handler': "Users/{UserId}/Items", - 'params': { - 'Ids': ','.join(str(x) for x in item_ids), - 'Fields': api.info() - } + url = self.server.http.get_handler_url("Users/{UserId}/Items") + params = { + 'Ids': ','.join(str(x) for x in item_ids), + 'Fields': api.info() } try: - result = self.server.http.request(request, s) + result = self.server.http.REQUEST(url, "GET", params, s) for item in result['Items']: diff --git a/jellyfin_kodi/jellyfin/http.py b/jellyfin_kodi/jellyfin/http.py index 63c58f3b..937c9f8a 100644 --- a/jellyfin_kodi/jellyfin/http.py +++ b/jellyfin_kodi/jellyfin/http.py @@ -64,6 +64,20 @@ class HTTP(object): return string + def REQUEST(self, url, type, params=None, json=None, session=None): + request = {'url': url, 'type': type} + if params is not None: + request['params'] = params + if json is not None: + request['json'] = json + return self.request(request, session) + + + def get_handler_url(self, handler): + server = self.config.data.get("auth.server", "") + return "%s/%s" % (server, handler) + + def request(self, data, session=None): ''' Give a chance to retry the connection. Jellyfin sometimes can be slow to answer back