Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[bumpversion]
commit = True
tag = True
current_version = 1.2.0
current_version = 1.3.1
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
serialize =
{major}.{minor}.{patch}-{release}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pypi-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand Down
88 changes: 60 additions & 28 deletions ShipthisAPI/shipthisapi.py
Original file line number Diff line number Diff line change
@@ -1,56 +1,79 @@
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]
else:
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:
Expand All @@ -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
return resp
40 changes: 20 additions & 20 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

setuptools.setup(
name='shipthisapi-python',
version='1.2.0',
version='1.3.1',
author="Mayur Rawte",
author_email="mayur@shipthis.co",
description="ShipthisAPI utility package",
Expand Down
Loading