From d8780e8add5449c2247094745e7b8ed23d81b3fe Mon Sep 17 00:00:00 2001 From: Kyle Robbertze Date: Fri, 20 Aug 2021 13:35:33 +0200 Subject: [PATCH 1/3] use api_clients method to update file size of items on the server --- python_apps/api_clients/api_clients/utils.py | 9 ++++++++- .../api_clients/api_clients/version2.py | 5 +++++ python_apps/pypo/pypo/pypofile.py | 19 +++++++------------ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/python_apps/api_clients/api_clients/utils.py b/python_apps/api_clients/api_clients/utils.py index 90a3f40cd..c0091705d 100644 --- a/python_apps/api_clients/api_clients/utils.py +++ b/python_apps/api_clients/api_clients/utils.py @@ -91,7 +91,7 @@ class ApiRequest: self.logger = logger self.auth = KeyAuth(api_key) - def __call__(self, _post_data=None, params=None, **kwargs): + def __call__(self, _post_data=None, _put_data=None, params=None, **kwargs): final_url = self.url.params(**kwargs).url() self.logger.debug(final_url) try: @@ -102,6 +102,13 @@ class ApiRequest: auth=self.auth, timeout=ApiRequest.API_HTTP_REQUEST_TIMEOUT, ) + elif _put_data is not None: + res = requests.put( + final_url, + data=_put_data, + auth=self.auth, + timeout=ApiRequest.API_HTTP_REQUEST_TIMEOUT, + ) else: res = requests.get( final_url, diff --git a/python_apps/api_clients/api_clients/version2.py b/python_apps/api_clients/api_clients/version2.py index 15c6cf6b4..f15d1f28a 100644 --- a/python_apps/api_clients/api_clients/version2.py +++ b/python_apps/api_clients/api_clients/version2.py @@ -130,3 +130,8 @@ class AirtimeApiClient: "independent_event": current["independent_event"], } return result + + def update_file(self, file_id, payload): + data = self.services.file_url(id=file_id) + data.update(payload) + return self.services.file_url(id=file_id, _put_data=data) diff --git a/python_apps/pypo/pypo/pypofile.py b/python_apps/pypo/pypo/pypofile.py index f7d5a2cab..638404b1d 100644 --- a/python_apps/pypo/pypo/pypofile.py +++ b/python_apps/pypo/pypo/pypofile.py @@ -88,8 +88,8 @@ class PypoFile(Thread): os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH) if media_item["filesize"] == 0: - file_size = self.report_file_size_and_md5_to_airtime( - dst, media_item["id"], host, username + file_size = self.report_file_size_and_md5_to_libretime( + dst, media_item["id"] ) media_item["filesize"] = file_size @@ -98,7 +98,7 @@ class PypoFile(Thread): self.logger.error("Could not copy from %s to %s" % (src, dst)) self.logger.error(e) - def report_file_size_and_md5_to_airtime(self, file_path, file_id, host, api_key): + def report_file_size_and_md5_to_libretime(self, file_path, file_id): try: file_size = os.path.getsize(file_path) @@ -117,18 +117,13 @@ class PypoFile(Thread): ) self.logger.error(e) - # Make PUT request to Airtime to update the file size and hash + # Make PUT request to LibreTime to update the file size and hash error_msg = ( - "Could not update media file %s with file size and md5 hash" % file_id + "Could not update media file %s with file size and md5 hash:" % file_id ) try: - put_url = "%s://%s:%s/rest/media/%s" % (host[0], host[1], host[2], file_id) - payload = json.dumps({"filesize": file_size, "md5": md5_hash}) - response = requests.put( - put_url, data=payload, auth=requests.auth.HTTPBasicAuth(api_key, "") - ) - if not response.ok: - self.logger.error(error_msg) + payload = {"filesize": file_size, "md5": md5_hash} + response = self.api_client.update_file(file_id, payload) except (ConnectionError, Timeout): self.logger.error(error_msg) except Exception as e: From 9c001a6d06ddc06d0b0a21db8800713389dfb6b6 Mon Sep 17 00:00:00 2001 From: Kyle Robbertze Date: Tue, 31 Aug 2021 20:11:39 +0200 Subject: [PATCH 2/3] force keyword only arguments --- python_apps/api_clients/api_clients/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_apps/api_clients/api_clients/utils.py b/python_apps/api_clients/api_clients/utils.py index c0091705d..50b3b66e9 100644 --- a/python_apps/api_clients/api_clients/utils.py +++ b/python_apps/api_clients/api_clients/utils.py @@ -91,7 +91,7 @@ class ApiRequest: self.logger = logger self.auth = KeyAuth(api_key) - def __call__(self, _post_data=None, _put_data=None, params=None, **kwargs): + def __call__(self, *, _post_data=None, _put_data=None, params=None, **kwargs): final_url = self.url.params(**kwargs).url() self.logger.debug(final_url) try: From ce3957fef19cd2a7d61e3061326cb170328553ef Mon Sep 17 00:00:00 2001 From: Kyle Robbertze Date: Wed, 1 Sep 2021 15:25:38 +0200 Subject: [PATCH 3/3] rename report function --- python_apps/pypo/pypo/pypofile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python_apps/pypo/pypo/pypofile.py b/python_apps/pypo/pypo/pypofile.py index 638404b1d..29c9912d4 100644 --- a/python_apps/pypo/pypo/pypofile.py +++ b/python_apps/pypo/pypo/pypofile.py @@ -88,7 +88,7 @@ class PypoFile(Thread): os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH) if media_item["filesize"] == 0: - file_size = self.report_file_size_and_md5_to_libretime( + file_size = self.report_file_size_and_md5_to_api( dst, media_item["id"] ) media_item["filesize"] = file_size @@ -98,7 +98,7 @@ class PypoFile(Thread): self.logger.error("Could not copy from %s to %s" % (src, dst)) self.logger.error(e) - def report_file_size_and_md5_to_libretime(self, file_path, file_id): + def report_file_size_and_md5_to_api(self, file_path, file_id): try: file_size = os.path.getsize(file_path)