Skip to content

Commit 780eb07

Browse files
committed
studio exception implementation, retuning resp json instead of resp
1 parent 1f69340 commit 780eb07

File tree

4 files changed

+43
-23
lines changed

4 files changed

+43
-23
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
setup(
1313
name='skylab_studio',
14-
version='0.0.9',
14+
version='0.0.10',
1515
author='skylabtech',
1616
author_email='[email protected]',
1717
packages=find_packages(),

skylab_studio/__init__.py

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import hashlib
1414

1515
from .version import VERSION
16+
from .studio_exception import StudioException
1617

1718
API_HEADER_KEY = 'X-SLT-API-KEY'
1819
API_HEADER_CLIENT = 'X-SLT-API-CLIENT'
@@ -117,26 +118,39 @@ def _api_request(self, endpoint, http_method, **kwargs):
117118
headers=headers,
118119
)
119120

120-
if http_method == 'POST':
121-
if data:
122-
response = requests.post(path, data=data, **req_kw)
123-
else:
124-
response = requests.post(path, **req_kw)
125-
elif http_method == 'PUT':
126-
response = requests.put(path, data=data, **req_kw)
127-
elif http_method == 'DELETE':
128-
response = requests.delete(path, **req_kw)
129-
else:
130-
response = requests.get(path, data=data, **req_kw)
131-
132-
LOGGER.debug('\tresponse code:%s', response.status_code)
133-
134121
try:
135-
LOGGER.debug('\tresponse: %s', response.json())
136-
except ValueError:
137-
LOGGER.debug('\tresponse: %s', response.content)
138-
139-
return response
122+
if http_method == 'POST':
123+
if data:
124+
response = requests.post(path, data=data, **req_kw)
125+
else:
126+
response = requests.post(path, **req_kw)
127+
elif http_method == 'PUT':
128+
response = requests.put(path, data=data, **req_kw)
129+
elif http_method == 'DELETE':
130+
response = requests.delete(path, **req_kw)
131+
else:
132+
response = requests.get(path, data=data, **req_kw)
133+
134+
LOGGER.debug('\tresponse code:%s', response.status_code)
135+
136+
try:
137+
LOGGER.debug('\tresponse: %s', response.json())
138+
except ValueError:
139+
LOGGER.debug('\tresponse: %s', response.content)
140+
141+
if not response.ok:
142+
status_code = response.status_code
143+
message = response.json()['message']
144+
145+
raise StudioException(status_code, message)
146+
except (StudioException, Exception) as e:
147+
formatted_response = {
148+
"message": e.message,
149+
"status": e.status_code
150+
}
151+
return formatted_response
152+
153+
return response.json()
140154

141155
def list_jobs(self):
142156
""" API call to get all jobs """
@@ -239,7 +253,7 @@ def list_photos(self):
239253
'GET'
240254
)
241255

242-
def get_upload_url(self, payload={"use_cache_upload": False}):
256+
def _get_upload_url(self, payload={"use_cache_upload": False}):
243257
return self._api_request('photos/upload_url', 'GET', payload=payload)
244258

245259
# todo privatize this method and test photo_upload
@@ -303,7 +317,7 @@ def upload_photo(self, photo_path, model, id):
303317
}
304318

305319
# Ask studio for a presigned url
306-
upload_url_resp = self.get_upload_url(payload=payload)
320+
upload_url_resp = self._get_upload_url(payload=payload)
307321
upload_url = upload_url_resp.json()['url']
308322

309323
# PUT request to presigned url with image data

skylab_studio/studio_exception.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class StudioException(Exception):
2+
def __init__(self, status_code, message="Studio exception occurred"):
3+
self.status_code = status_code
4+
self.message = message
5+
super().__init__(self.message, self.status_code)
6+

skylab_studio/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
For more information, visit https://studio.skylabtech.ai
44
"""
55

6-
VERSION = '0.0.9'
6+
VERSION = '0.0.10'

0 commit comments

Comments
 (0)