diff --git a/services/managers/fleetup_manager.py b/services/managers/fleetup_manager.py index 3ed00d4a..bffa9b55 100644 --- a/services/managers/fleetup_manager.py +++ b/services/managers/fleetup_manager.py @@ -21,24 +21,24 @@ class FleetUpManager(): try: jsondata = requests.get(url).content fmembers=json.loads(jsondata.decode()) - except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {row["UserId"]:{"user_id":row["UserId"], + return {row["UserId"]:{"user_id":row["UserId"], "char_name":row["EveCharName"], "char_id":row["EveCharId"], "corporation":row["Corporation"]} for row in fmembers["Data"]} + except requests.exceptions.ConnectionError: + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.debug("No fleetup members retrieved.") + return {} + @staticmethod def get_fleetup_operations(): url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Operations/" + str(groupid) + "" try: jsondata = requests.get(url).content foperations=json.loads(jsondata.decode()) - except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {row["StartString"]:{"subject":row["Subject"], + return {row["StartString"]:{"subject":row["Subject"], "start": (datetime.strptime(row["StartString"], "%Y-%m-%d %H:%M:%S")), "end": (datetime.strptime(row["EndString"], "%Y-%m-%d %H:%M:%S")), "operation_id":row["OperationId"], @@ -48,6 +48,11 @@ class FleetUpManager(): "url":row["Url"], "doctrine":row["Doctrines"], "organizer":row["Organizer"]} for row in foperations["Data"]} + except requests.exceptions.ConnectionError: + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.debug("No fleetup operations retrieved.") + return {} @staticmethod def get_fleetup_timers(): @@ -55,10 +60,7 @@ class FleetUpManager(): try: jsondata = requests.get(url).content ftimers=json.loads(jsondata.decode()) - except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {row["ExpiresString"]:{"solarsystem":row["SolarSystem"], + return {row["ExpiresString"]:{"solarsystem":row["SolarSystem"], "planet":row["Planet"], "moon":row["Moon"], "owner":row["Owner"], @@ -66,6 +68,11 @@ class FleetUpManager(): "timer_type":row["TimerType"], "expires": (datetime.strptime(row["ExpiresString"], "%Y-%m-%d %H:%M:%S")), "notes":row["Notes"]} for row in ftimers["Data"]} + except requests.exceptions.ConnectionError: + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.debug("No fleetup timers retrieved.") + return {} @staticmethod def get_fleetup_doctrines(): @@ -73,10 +80,12 @@ class FleetUpManager(): try: jsondata = requests.get(url).content fdoctrines=json.loads(jsondata.decode()) + return {"fleetup_doctrines":fdoctrines["Data"]} except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {"fleetup_doctrines":fdoctrines["Data"]} + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.debug("No fleetup doctrines retrieved.") + return {"fleetup_doctrines":[]} @staticmethod def get_fleetup_doctrine(doctrinenumber): @@ -84,10 +93,12 @@ class FleetUpManager(): try: jsondata = requests.get(url).content fdoctrine=json.loads(jsondata.decode()) + return {"fitting_doctrine":fdoctrine} except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {"fitting_doctrine":fdoctrine} + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.warn("Fleetup doctrine number %s not found" % doctrinenumber) + return {"fitting_doctrine":{}} @staticmethod def get_fleetup_fittings(): @@ -95,10 +106,7 @@ class FleetUpManager(): try: jsondata = requests.get(url).content ffittings=json.loads(jsondata.decode()) - except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {row["FittingId"]:{"fitting_id":row["FittingId"], + return {row["FittingId"]:{"fitting_id":row["FittingId"], "name":row["Name"], "icon_id":row["EveTypeId"], "hull":row["HullType"], @@ -107,6 +115,11 @@ class FleetUpManager(): "faction":row["Faction"], "categories":row["Categories"], "last_update":(datetime.strptime(row["LastUpdatedString"], "%Y-%m-%d %H:%M:%S"))} for row in ffittings["Data"]} + except requests.exceptions.ConnectionError: + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.debug("No fleetup fittings retrieved.") + return {} @staticmethod def get_fleetup_fitting(fittingnumber): @@ -114,10 +127,12 @@ class FleetUpManager(): try: jsondata = requests.get(url).content ffitting=json.loads(jsondata.decode()) + return {"fitting_data":ffitting["Data"]} except requests.exceptions.ConnectionError: - return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {"fitting_data":ffitting["Data"]} + logger.warn("Can't connect to Fleet-Up API, is it offline?!") + except (ValueError, UnicodeDecodeError): + logger.warn("Fleetup fitting number %s not found" % fittingnumber) + return {"fitting_data":{}} @staticmethod def get_fleetup_doctrineid(fittingnumber): @@ -125,10 +140,12 @@ class FleetUpManager(): try: jsondata = requests.get(url).content fdoctrineid=json.loads(jsondata.decode()) + return fdoctrineid['Data']['Doctrines'][0]['DoctrineId'] except requests.exceptions.ConnectionError: return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return fdoctrineid['Data']['Doctrines'][0]['DoctrineId'] + except (ValueError, UnicodeDecodeError): + logger.warn("Fleetup doctrine number not found for fitting number %s" % fittingnumber) + return None @staticmethod def get_fleetup_fitting_eft(fittingnumber): @@ -136,7 +153,9 @@ class FleetUpManager(): try: jsondata = requests.get(url).content ffittingeft=json.loads(jsondata.decode()) + return {"fitting_eft":ffittingeft["Data"]["FittingData"]} except requests.exceptions.ConnectionError: return HttpResponse("Can't connect to Fleet-Up API, is it offline?!") - - return {"fitting_eft":ffittingeft["Data"]["FittingData"]} + except (ValueError, UnicodeDecodeError): + logger.warn("Fleetup fitting eft not found for fitting number %s" % fittingnumber) + return {"fitting_eft":{}}