Skip to content

Commit b459c34

Browse files
committed
use GeminiDRAGONS user-agent string, error checking on cal results
1 parent ad3e2ea commit b459c34

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

recipe_system/cal_service/remotedb.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
UPLOADCOOKIE = None
1919

20+
from recipe_system import version
21+
2022
class RemoteDB(CalDB):
2123
"""
2224
The class for remote calibration databases. It inherits from CalDB, but
@@ -165,6 +167,7 @@ def retrieve_calibration(rqurl, rq, howmany=1):
165167
'descriptors': make_dict_json_encodable(rq.descriptors)})
166168
try:
167169
calrq = urllib.request.Request(rqurl)
170+
rqurl.add_header('User-Agent', 'GeminiDRAGONS ' + version())
168171
u = urllib.request.urlopen(calrq, postdata.encode('utf-8'))
169172
response = u.read()
170173
except (urllib.error.HTTPError, urllib.error.URLError) as err:
@@ -175,7 +178,22 @@ def retrieve_calibration(rqurl, rq, howmany=1):
175178

176179
try:
177180
results = json.loads(response)
178-
cals = results[0]['cal_info'][0]['cals']
181+
if len(results) == 0:
182+
return None, 'Remote Cal manager returned results for zero files'
183+
if len(results) != 1:
184+
return None, 'Remote Cal manager returned results for multiple files'
185+
cal_info = results[0].get('cal_info')
186+
if cal_info is None:
187+
return None, 'Remote Cal manager result contained no cal_info item'
188+
if len(cal_info) == 0:
189+
return None, 'Remote Cal manager result cal_info list empty'
190+
if len(cal_info) != 0:
191+
return None, 'Remote Cal manager result cal_info list contained multiple entries'
192+
cals = results[0]['cal_info'][0].get('cals')
193+
if cals is None:
194+
return None, 'Remote Cal manager result cals list missing'
195+
if len(cals) == 0:
196+
return None, 'Remote Cal manager result cals list empty'
179197
calurlel = [d['url'] for d in cals]
180198
calurlmd5 = [d['md5'] for d in cals]
181199

0 commit comments

Comments
 (0)