From 04d06a5b3c7fe35f10fe2af25ae2d9389dfd4ee2 Mon Sep 17 00:00:00 2001 From: Veer Prakash Date: Mon, 2 Feb 2026 13:06:33 +0530 Subject: [PATCH 1/4] chore: Fixed Vulnerabilities issues --- ShipthisAPI/shipthisapi.py | 88 ++++++++++++++++++++++++++------------ requirements.txt | 40 ++++++++--------- 2 files changed, 80 insertions(+), 48 deletions(-) diff --git a/ShipthisAPI/shipthisapi.py b/ShipthisAPI/shipthisapi.py index 18f1d6d..ad5e3e2 100644 --- a/ShipthisAPI/shipthisapi.py +++ b/ShipthisAPI/shipthisapi.py @@ -1,48 +1,69 @@ from typing import Dict, List import requests + + class ShipthisAPI: - base_api_endpoint = 'https://api.shipthis.co/api/v3/' + base_api_endpoint = "https://api.shipthis.co/api/v3/" - def __init__(self, organisation: str, x_api_key:str, user_type='employee', region_id: str=None, location_id: str=None) -> None: + def __init__( + self, + organisation: str, + x_api_key: str, + user_type="employee", + region_id: str = None, + location_id: str = None, + ) -> None: self.x_api_key = x_api_key self.organisation_id = organisation self.user_type = user_type self.region_id = region_id self.location_id = location_id - def set_region_location(self, region_id, location_id): self.region_id = region_id self.location_id = location_id - - def _make_request(self, method: str, path: str, query_params: str=None, request_data=None) -> None: + + def _make_request( + self, method: str, path: str, query_params: str = None, request_data=None + ) -> None: headers = { "x-api-key": self.x_api_key, "organisation": self.organisation_id, "user_type": self.user_type, - "location": 'new_york' + "location": "new_york", } - fetched_response = requests.request(method, self.base_api_endpoint + path, data=request_data or {}, headers=headers, params=query_params) + fetched_response = requests.request( + method, + self.base_api_endpoint + path, + data=request_data or {}, + headers=headers, + params=query_params, + ) result = fetched_response.json() - + if fetched_response.status_code == 200: if result.get("success"): return result.get("data") else: - error_message = result.get("errors") or "API call failed. Please check your internet connection or try again later" - return error_message[0].get('message') if error_message[0].get('message') else "Please provide the necessary requirements or try again later" + error_message = ( + result.get("errors") + or "API call failed. Please check your internet connection or try again later" + ) + return ( + error_message[0].get("message") + if error_message[0].get("message") + else "Please provide the necessary requirements or try again later" + ) else: - return "Internal Server error, please try again later" + return f"Request failed with status {fetched_response.status_code}: {fetched_response.text}" - def info(self) -> Dict: - info_resp = self._make_request('GET', 'auth/info') + def info(self) -> Dict: + info_resp = self._make_request("GET", "auth/info") return info_resp - - - def get_one_item(self, collection_name: str, params=None) -> Dict: - resp = self._make_request('GET', 'incollection/' + collection_name) - if isinstance(resp, dict): + def get_one_item(self, collection_name: str, params=None) -> Dict: + resp = self._make_request("GET", "incollection/" + collection_name) + if isinstance(resp, dict): if resp.get("items"): # return first elem return resp.get("items")[0] @@ -50,7 +71,9 @@ def get_one_item(self, collection_name: str, params=None) -> Dict: return resp def get_list(self, collection_name: str, params=None) -> List[Dict] or str: - get_list_response = self._make_request('GET', 'incollection/' + collection_name, params) + get_list_response = self._make_request( + "GET", "incollection/" + collection_name, params + ) if isinstance(get_list_response, str): return get_list_response else: @@ -59,26 +82,35 @@ def get_list(self, collection_name: str, params=None) -> List[Dict] or str: else: return get_list_response - - def create_item(self, collection_name: str, data=None) -> Dict: - resp = self._make_request('POST', 'incollection/' + collection_name, request_data={"reqbody": data}) - if isinstance(resp, dict): + def create_item(self, collection_name: str, data=None) -> Dict: + resp = self._make_request( + "POST", "incollection/" + collection_name, request_data={"reqbody": data} + ) + if isinstance(resp, dict): if resp.get("data"): return resp.get("data") else: return resp - def update_item(self, collection_name: str, object_id: str, updated_data=None) -> Dict: - resp = self._make_request('PUT', 'incollection/' + collection_name + '/' + object_id, request_data={"reqbody": updated_data}) - if isinstance(resp, dict): + def update_item( + self, collection_name: str, object_id: str, updated_data=None + ) -> Dict: + resp = self._make_request( + "PUT", + "incollection/" + collection_name + "/" + object_id, + request_data={"reqbody": updated_data}, + ) + if isinstance(resp, dict): if resp.get("data"): return resp.get("data") else: return resp def delete_item(self, collection_name: str, object_id: str) -> Dict: - resp = self._make_request('DELETE', 'incollection/' + collection_name + '/' + object_id) + resp = self._make_request( + "DELETE", "incollection/" + collection_name + "/" + object_id + ) # if isinstance(resp, str): # return resp # else: - return resp \ No newline at end of file + return resp diff --git a/requirements.txt b/requirements.txt index 41004e7..db679ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,24 +1,24 @@ -bleach==4.1.0 +bleach==6.1.0 bump2version==1.0.1 bumpversion==0.6.0 -certifi==2021.5.30 -charset-normalizer==2.0.6 -colorama==0.4.4 -docutils==0.17.1 -idna==3.2 -importlib-metadata==4.8.1 -keyring==23.2.1 -packaging==21.0 -pkginfo==1.7.1 -Pygments==2.10.0 -pyparsing==2.4.7 -readme-renderer==29.0 -requests==2.26.0 -requests-toolbelt==0.9.1 -rfc3986==1.5.0 +certifi==2024.7.4 +charset-normalizer==3.3.2 +colorama==0.4.6 +docutils==0.20.1 +idna==3.7 +importlib-metadata==7.0.0 +keyring==24.3.0 +packaging==23.2 +pkginfo==1.9.6 +Pygments==2.17.2 +pyparsing==3.1.1 +readme-renderer==42.0 +requests==2.32.5 +requests-toolbelt==1.0.0 +rfc3986==2.0.0 six==1.16.0 -tqdm==4.62.3 -twine==3.4.2 -urllib3==1.26.7 +tqdm==4.66.3 +twine==4.0.2 +urllib3==2.6.3 webencodings==0.5.1 -zipp==3.5.0 +zipp==3.19.1 From 55feb25f50e1de38fd18fdb38cf15a07df6d14e4 Mon Sep 17 00:00:00 2001 From: Veer Prakash Date: Mon, 2 Feb 2026 14:05:59 +0530 Subject: [PATCH 2/4] =?UTF-8?q?Bump=20version:=201.2.0=20=E2=86=92=201.3.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index dc00adc..c5077ed 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 1.2.0 +current_version = 1.3.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch}-{release} diff --git a/setup.py b/setup.py index afdff1e..f689b39 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setuptools.setup( name='shipthisapi-python', - version='1.2.0', + version='1.3.0', author="Mayur Rawte", author_email="mayur@shipthis.co", description="ShipthisAPI utility package", From 6a165e3510a6bf595980b74a51f5db7c1c0ec645 Mon Sep 17 00:00:00 2001 From: Veer Prakash Date: Mon, 2 Feb 2026 14:14:20 +0530 Subject: [PATCH 3/4] Upgrade CI to Python 3.10 --- .github/workflows/pypi-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pypi-build.yml b/.github/workflows/pypi-build.yml index 396a17a..c792905 100644 --- a/.github/workflows/pypi-build.yml +++ b/.github/workflows/pypi-build.yml @@ -11,10 +11,10 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v2 with: - python-version: 3.9 + python-version: "3.10" - name: Install pypa/build run: | From 7e309f1c3054e9b874dd70ca7ffa4ad5f4388284 Mon Sep 17 00:00:00 2001 From: Veer Prakash Date: Mon, 2 Feb 2026 14:20:41 +0530 Subject: [PATCH 4/4] =?UTF-8?q?Bump=20version:=201.3.0=20=E2=86=92=201.3.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index c5077ed..34cf111 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 1.3.0 +current_version = 1.3.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch}-{release} diff --git a/setup.py b/setup.py index f689b39..a37fbaa 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setuptools.setup( name='shipthisapi-python', - version='1.3.0', + version='1.3.1', author="Mayur Rawte", author_email="mayur@shipthis.co", description="ShipthisAPI utility package",