From 1864b9dc2f6edb291536154a50ab512c0e04e612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20L=C3=B6sche?= Date: Mon, 23 Sep 2024 18:07:26 +0200 Subject: [PATCH] Refactor (#5) * Refactor http methods * Update docker workflow * Better log string --- .github/workflows/docker-build.yml | 4 +- fixattiosync/attiodata.py | 62 ++++++++++++++++++------------ 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index b598890..17e0415 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -58,8 +58,8 @@ jobs: type=sha,prefix= type=edge labels: | - org.opencontainers.image.title=fixbackup - org.opencontainers.image.description=FIX DB Backup System + org.opencontainers.image.title=fixattiosync + org.opencontainers.image.description=Fix Attio Sync org.opencontainers.image.vendor=Some Engineering Inc. - name: Set up QEMU diff --git a/fixattiosync/attiodata.py b/fixattiosync/attiodata.py index 9d8c597..f298fd3 100644 --- a/fixattiosync/attiodata.py +++ b/fixattiosync/attiodata.py @@ -28,41 +28,55 @@ def _headers(self, json: bool = False) -> dict[str, str]: return headers - def _delete_data( - self, endpoint: str, json: Optional[dict[str, Any]] = None, params: Optional[dict[str, str]] = None + def _request( + self, + method: str, + endpoint: str, + json: Optional[dict[str, Any]] = None, + params: Optional[dict[str, str]] = None, ) -> dict[str, Any]: - log.debug(f"Deleting data from {endpoint}") url = self.base_url + endpoint - headers = self._headers(json=True) if json else self._headers(json=False) - response = requests.delete(url, headers=headers, json=json, params=params) + headers = self._headers(json=bool(json)) + + action_strings = { + "DELETE": "Deleting data from", + "POST": "Posting data to", + "PUT": "Putting data to", + "GET": "Fetching data from", + } + action_str = action_strings.get(method.upper(), f"Requesting data via {method} from") + + log.debug(f"{action_str} {url}") + response = requests.request(method, url, headers=headers, json=json, params=params) + if response.status_code == 200: return response.json() # type: ignore else: - raise Exception(f"Error deleting data from {url}: {response.status_code} {response.text}") + raise Exception(f"Error {action_str.lower()} {url}: {response.status_code} {response.text}") + + def _delete_data( + self, + endpoint: str, + json: Optional[dict[str, Any]] = None, + params: Optional[dict[str, str]] = None, + ) -> dict[str, Any]: + return self._request("DELETE", endpoint, json=json, params=params) def _post_data( - self, endpoint: str, json: Optional[dict[str, Any]] = None, params: Optional[dict[str, str]] = None + self, + endpoint: str, + json: Optional[dict[str, Any]] = None, + params: Optional[dict[str, str]] = None, ) -> dict[str, Any]: - log.debug(f"Fetching data from {endpoint}") - url = self.base_url + endpoint - headers = self._headers(json=True) if json else self._headers(json=False) - response = requests.post(url, headers=headers, json=json, params=params) - if response.status_code == 200: - return response.json() # type: ignore - else: - raise Exception(f"Error fetching data from {url}: {response.status_code} {response.text}") + return self._request("POST", endpoint, json=json, params=params) def _put_data( - self, endpoint: str, json: Optional[dict[str, Any]] = None, params: Optional[dict[str, str]] = None + self, + endpoint: str, + json: Optional[dict[str, Any]] = None, + params: Optional[dict[str, str]] = None, ) -> dict[str, Any]: - log.debug(f"Putting data to {endpoint}") - url = self.base_url + endpoint - headers = self._headers(json=True) if json else self._headers(json=False) - response = requests.put(url, headers=headers, json=json, params=params) - if response.status_code == 200: - return response.json() # type: ignore - else: - raise Exception(f"Error putting data to {url}: {response.status_code} {response.text}") + return self._request("PUT", endpoint, json=json, params=params) def delete_record(self, object_id: str, record_id: UUID) -> dict[str, Any]: endpoint = f"objects/{object_id}/records/{record_id}"