@@ -123,28 +123,31 @@ def async_rest_api(url, auth=None, data=None, debug=False, delay=60):
123123 submit = obj_from_url (url , auth = auth , data = data , debug = debug )
124124# If "status" is nor present, or if "status" is somehow not "submitted"
125125# assume this is not an asynchronous call and it's done.
126- if ('status' in submit ) and (submit ['status' ] == 'done ' ) and ('data' in submit ):
126+ if ('status' in submit ) and (submit ['status' ] != 'submitted ' ) and ('data' in submit ):
127127 return submit ['data' ]
128128# if not (('status' in submit) and (submit['status'] == 'submitted') and ('url' in submit)):
129129# return submit # No status, no url and no submitted
130- result = obj_from_url (submit ['url' ], debug = debug )
130+ result = obj_from_url (submit ['url' ], auth = auth , debug = debug )
131131 try :
132- while result ['status' ] != 'done ' :
132+ while result ['status' ] == 'submitted ' :
133133 if debug :
134134 print ("waiting %d seconds ..." % delay )
135135 time .sleep (delay )
136- result = obj_from_url (submit ['url' ], debug = debug )
136+ result = obj_from_url (submit ['url' ], auth = auth , debug = debug )
137137 except KeyError :
138138 print ("Error in response to " + url , file = sys .stderr )
139139 print ("Does not contain 'status' field, likely API syntax error" , file = sys .stderr )
140140 print (json .dumps (result ), file = sys .stderr )
141141 sys .exit (1 )
142142 except TypeError : # result isn't json, return it anyway
143143 return (result .decode ("utf8" ))
144- if 'ERROR' in result ['data' ]:
145- sys .stderr .write ("ERROR: %s\n " % result ['data' ]['ERROR' ])
146- print (json .dumps (result ), file = sys .stderr )
147- sys .exit (1 )
144+ try :
145+ if 'ERROR' in result ['data' ]:
146+ sys .stderr .write ("ERROR: %s\n " % result ['data' ]['ERROR' ])
147+ print (json .dumps (result ), file = sys .stderr )
148+ sys .exit (1 )
149+ except KeyError : # result doesn't have "data"
150+ return result
148151 return result ['data' ]
149152
150153# POST file to MG-RAST or Shock
@@ -412,7 +415,7 @@ def kbids_to_mgids(kbids):
412415def kbid_lookup (ids , reverse = False ):
413416 request = 'mg2kb' if reverse else 'kb2mg'
414417 post = json .dumps ({'ids' : ids }, separators = (',' ,':' ))
415- data = obj_from_url (API_URL + '/job/' + request , data = post )
418+ data = obj_from_url (API_URL + '/job/' + request , auth = auth , data = post )
416419 return data ['data' ]
417420
418421def get_auth_token (opts = None ):
0 commit comments