11from typing import Dict , List
22import requests
3+
4+
35class ShipthisAPI :
4- base_api_endpoint = ' https://api.shipthis.co/api/v3/'
6+ base_api_endpoint = " https://api.shipthis.co/api/v3/"
57
6- def __init__ (self , organisation : str , x_api_key :str , user_type = 'employee' , region_id : str = None , location_id : str = None ) -> None :
8+ def __init__ (
9+ self ,
10+ organisation : str ,
11+ x_api_key : str ,
12+ user_type = "employee" ,
13+ region_id : str = None ,
14+ location_id : str = None ,
15+ ) -> None :
716 self .x_api_key = x_api_key
817 self .organisation_id = organisation
918 self .user_type = user_type
1019 self .region_id = region_id
1120 self .location_id = location_id
1221
13-
1422 def set_region_location (self , region_id , location_id ):
1523 self .region_id = region_id
1624 self .location_id = location_id
17-
18- def _make_request (self , method : str , path : str , query_params : str = None , request_data = None ) -> None :
25+
26+ def _make_request (
27+ self , method : str , path : str , query_params : str = None , request_data = None
28+ ) -> None :
1929 headers = {
2030 "x-api-key" : self .x_api_key ,
2131 "organisation" : self .organisation_id ,
2232 "user_type" : self .user_type ,
23- "location" : ' new_york'
33+ "location" : " new_york" ,
2434 }
25- fetched_response = requests .request (method , self .base_api_endpoint + path , data = request_data or {}, headers = headers , params = query_params )
35+ fetched_response = requests .request (
36+ method ,
37+ self .base_api_endpoint + path ,
38+ data = request_data or {},
39+ headers = headers ,
40+ params = query_params ,
41+ )
2642 result = fetched_response .json ()
27-
43+
2844 if fetched_response .status_code == 200 :
2945 if result .get ("success" ):
3046 return result .get ("data" )
3147 else :
32- error_message = result .get ("errors" ) or "API call failed. Please check your internet connection or try again later"
33- return error_message [0 ].get ('message' ) if error_message [0 ].get ('message' ) else "Please provide the necessary requirements or try again later"
48+ error_message = (
49+ result .get ("errors" )
50+ or "API call failed. Please check your internet connection or try again later"
51+ )
52+ return (
53+ error_message [0 ].get ("message" )
54+ if error_message [0 ].get ("message" )
55+ else "Please provide the necessary requirements or try again later"
56+ )
3457 else :
35- return "Internal Server error, please try again later "
58+ return f"Request failed with status { fetched_response . status_code } : { fetched_response . text } "
3659
37- def info (self ) -> Dict :
38- info_resp = self ._make_request (' GET' , ' auth/info' )
60+ def info (self ) -> Dict :
61+ info_resp = self ._make_request (" GET" , " auth/info" )
3962 return info_resp
40-
41-
4263
43- def get_one_item (self , collection_name : str , params = None ) -> Dict :
44- resp = self ._make_request (' GET' , ' incollection/' + collection_name )
45- if isinstance (resp , dict ):
64+ def get_one_item (self , collection_name : str , params = None ) -> Dict :
65+ resp = self ._make_request (" GET" , " incollection/" + collection_name )
66+ if isinstance (resp , dict ):
4667 if resp .get ("items" ):
4768 # return first elem
4869 return resp .get ("items" )[0 ]
4970 else :
5071 return resp
5172
5273 def get_list (self , collection_name : str , params = None ) -> List [Dict ] or str :
53- get_list_response = self ._make_request ('GET' , 'incollection/' + collection_name , params )
74+ get_list_response = self ._make_request (
75+ "GET" , "incollection/" + collection_name , params
76+ )
5477 if isinstance (get_list_response , str ):
5578 return get_list_response
5679 else :
@@ -59,26 +82,35 @@ def get_list(self, collection_name: str, params=None) -> List[Dict] or str:
5982 else :
6083 return get_list_response
6184
62-
63- def create_item (self , collection_name : str , data = None ) -> Dict :
64- resp = self ._make_request ('POST' , 'incollection/' + collection_name , request_data = {"reqbody" : data })
65- if isinstance (resp , dict ):
85+ def create_item (self , collection_name : str , data = None ) -> Dict :
86+ resp = self ._make_request (
87+ "POST" , "incollection/" + collection_name , request_data = {"reqbody" : data }
88+ )
89+ if isinstance (resp , dict ):
6690 if resp .get ("data" ):
6791 return resp .get ("data" )
6892 else :
6993 return resp
7094
71- def update_item (self , collection_name : str , object_id : str , updated_data = None ) -> Dict :
72- resp = self ._make_request ('PUT' , 'incollection/' + collection_name + '/' + object_id , request_data = {"reqbody" : updated_data })
73- if isinstance (resp , dict ):
95+ def update_item (
96+ self , collection_name : str , object_id : str , updated_data = None
97+ ) -> Dict :
98+ resp = self ._make_request (
99+ "PUT" ,
100+ "incollection/" + collection_name + "/" + object_id ,
101+ request_data = {"reqbody" : updated_data },
102+ )
103+ if isinstance (resp , dict ):
74104 if resp .get ("data" ):
75105 return resp .get ("data" )
76106 else :
77107 return resp
78108
79109 def delete_item (self , collection_name : str , object_id : str ) -> Dict :
80- resp = self ._make_request ('DELETE' , 'incollection/' + collection_name + '/' + object_id )
110+ resp = self ._make_request (
111+ "DELETE" , "incollection/" + collection_name + "/" + object_id
112+ )
81113 # if isinstance(resp, str):
82114 # return resp
83115 # else:
84- return resp
116+ return resp
0 commit comments