Skip to content

Commit 367187c

Browse files
committed
Merge branch 'nightly'
2 parents 3070660 + 1079a9b commit 367187c

1 file changed

Lines changed: 35 additions & 20 deletions

File tree

main.py

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
__author__ = 'Booskit'
2-
__version__ = '1.2'
2+
__version__ = '1.2a'
33
__description__ = 'PyITAgent - Python agent for sending computer information to your Snipe-IT instance.'
44

55
import requests
@@ -135,14 +135,18 @@ def send_request(self, method, endpoint, payload=None):
135135
def get_manufacturer(self, manufacturer_name):
136136
endpoint = f'manufacturers?name={manufacturer_name}'
137137
response = self.send_request('GET', endpoint)
138-
try:
139-
if response['total'] != 0:
138+
# Check for API error response
139+
if response.get('status') == 'error':
140+
print("API Error:", response.get('messages', 'Unknown error'))
141+
return None
142+
# Handle case where 'total' key is missing or 0
143+
if response.get('total', 0) != 0:
144+
try:
140145
return response['rows'][0]['id']
141-
else:
142-
print("No manufacturer found in database, perhaps create a new one?")
143-
return None
144-
except KeyError:
145-
raise
146+
except (KeyError, IndexError):
147+
raise KeyError("Unexpected response format or empty 'rows'")
148+
else:
149+
raise Exception(f"Failed to get hardware: {response.get('messages')}")
146150

147151
def post_manufacturer(self, manufacturer_name):
148152
endpoint = 'manufacturers'
@@ -182,13 +186,18 @@ def post_model(self, manufacturer_id, category_id = 3, fieldset_id = 1):
182186
def get_model(self, model_name):
183187
endpoint = f'models?limit=1&search={model_name}&sort=name'
184188
response = self.send_request('GET', endpoint)
185-
try:
186-
if response['total'] != 0:
189+
# Check for API error response
190+
if response.get('status') == 'error':
191+
print("API Error:", response.get('messages', 'Unknown error'))
192+
return None
193+
# Handle case where 'total' key is missing or 0
194+
if response.get('total', 0) != 0:
195+
try:
187196
return response['rows'][0]['id']
188-
except KeyError:
189-
raise
190-
print("No model found in database, perhaps create a new one?")
191-
return None
197+
except (KeyError, IndexError):
198+
raise KeyError("Unexpected response format or empty 'rows'")
199+
else:
200+
raise Exception(f"Failed to get model: {response.get('messages')}")
192201

193202
def get_or_create_model(self, manufacturer_id):
194203
model_id = self.get_model(self.model)
@@ -217,13 +226,19 @@ def post_hardware(self, serial_number, model_id, status_id, company_id):
217226
def get_hardware(self, serial_number):
218227
endpoint = f'hardware/byserial/{serial_number}?deleted=false'
219228
response = self.send_request('GET', endpoint)
220-
try:
221-
if response['total'] != 0:
229+
# Check for API error response
230+
if response.get('status') == 'error':
231+
print("API Error:", response.get('messages', 'Unknown error'))
232+
return None
233+
# Handle case where 'total' key is missing or 0
234+
if response.get('total', 0) != 0:
235+
try:
222236
return response['rows'][0]['id']
223-
except KeyError:
224-
raise
225-
print("No hardware found in database, perhaps create a new one?")
226-
return None
237+
except (KeyError, IndexError):
238+
raise KeyError("Unexpected response format or empty 'rows'")
239+
else:
240+
raise Exception(f"Failed to get hardware: {response.get('messages')}")
241+
227242

228243
def patch_hardware(self, hardware_id, serial_number, model_id, status_id, company_id):
229244
endpoint = f'hardware/{hardware_id}?deleted=false'

0 commit comments

Comments
 (0)