def inara_cmdr(self, cmdr): if self.player_name is None: return None if self.backoff["Inara"].throttled(): EDRLOG.log(u"Backing off from Inara API calls", "DEBUG") return None EDRLOG.log(u"Requesting Inara profile for {}".format(cmdr), "INFO") headers = { "Authorization": "ApiKey {}".format(self.INARA_API_KEY), "X-EDR-UID": self.uid() } requester = quote( self.player_name.encode('utf-8')) if self.player_name else u"-" endpoint = "https://us-central1-blistering-inferno-4028.cloudfunctions.net/edr/v1/inara/{}/{}".format( quote(cmdr.lower().encode('utf-8')), quote(requester)) resp = self.__get(endpoint, "EDR", headers=headers) if not self.__check_response(resp, "Inara", "Inara"): EDRLOG.log( u"Inara profile failed. Error code: {}".format( resp.status_code), "ERROR") return None processed = self.__process_inara_response(resp.content) if not processed: return None cmdr_profile = edrcmdrprofile.EDRCmdrProfile() cmdr_profile.from_inara_api(processed) return cmdr_profile
def cmdr(self, cmdr, autocreate=True): if not self.__preflight("cmdr", cmdr): EDRLOG.log(u"Preflight failed for cmdr call.", "DEBUG") raise CommsJammedError("cmdr") cmdr_profile = edrcmdrprofile.EDRCmdrProfile() params = {} if sys.version_info.major == 2: params = { "orderBy": '"cname"', "equalTo": json.dumps(cmdr.lower().encode('utf-8')), "limitToFirst": 1, "auth": self.auth_token() } else: params = { "orderBy": '"cname"', "equalTo": json.dumps(cmdr.lower()), "limitToFirst": 1, "auth": self.auth_token() } resp = self.__get("{}/v1/cmdrs.json".format(self.EDR_SERVER), "EDR", params) if not self.__check_response(resp, "EDR", "Cmdrs"): EDRLOG.log(u"Failed to retrieve cmdr id.", "ERROR") EDRLOG.log( u"{error}, {content}".format(error=resp.status_code, content=resp.text), "DEBUG") return None if resp.content == 'null' or resp.content == b'null': if autocreate and not self.is_anonymous(): params = {"auth": self.auth_token()} endpoint = "{}/v1/cmdrs.json".format(self.EDR_SERVER) resp = self.__post(endpoint, "EDR", params=params, json={ "name": cmdr, "uid": self.uid(), "requester": self.player_name }) if not self.__check_response(resp, "EDR", "Post cmdr"): EDRLOG.log(u"Failed to retrieve cmdr key.", "ERROR") return None json_cmdr = json.loads(resp.content) EDRLOG.log(u"New cmdr:{}".format(json_cmdr), "DEBUG") cmdr_profile.cid = list(json_cmdr.values())[0] cmdr_profile.name = cmdr else: return None else: json_cmdr = json.loads(resp.content) EDRLOG.log(u"Existing cmdr:{}".format(json_cmdr), "DEBUG") cmdr_profile.cid = list(json_cmdr)[0] cmdr_profile.from_dict(list(json_cmdr.values())[0]) return cmdr_profile
def cmdr(self, cmdr_name): if self.requester is None: return json_resp = self.__cmdr(cmdr_name) if json_resp: profile = edrcmdrprofile.EDRCmdrProfile() profile.from_inara_api(json_resp) EDRLOG.log(u"Obtained a cmdr profile from Inara API.", "INFO") return profile return None
def cmdr(self, cmdr, autocreate=True): cmdr_profile = edrcmdrprofile.EDRCmdrProfile() params = { "orderBy": '"cname"', "equalTo": json.dumps(urllib.quote_plus(cmdr.lower().encode('utf-8'))), "limitToFirst": 1, "auth": self.auth_token() } endpoint = "{}/v1/cmdrs.json".format(self.EDR_SERVER) EDRLOG.log(u"Endpoint: {}".format(endpoint), "DEBUG") resp = requests.get(endpoint, params=params) if resp.status_code != requests.codes.ok: EDRLOG.log(u"Failed to retrieve cmdr id.", "ERROR") EDRLOG.log( u"{error}, {content}".format(error=resp.status_code, content=resp.content), "DEBUG") return None if resp.content == 'null': if autocreate: params = {"auth": self.auth_token()} endpoint = "{}/v1/cmdrs.json".format(self.EDR_SERVER) resp = requests.post(endpoint, params=params, json={ "name": cmdr, "uid": self.uid() }) if resp.status_code != requests.codes.ok: EDRLOG.log(u"Failed to retrieve cmdr key.", "ERROR") return None json_cmdr = json.loads(resp.content) EDRLOG.log(u"New cmdr:{}".format(json_cmdr), "DEBUG") cmdr_profile.cid = json_cmdr.values()[0] cmdr_profile.name = cmdr else: return None else: json_cmdr = json.loads(resp.content) EDRLOG.log(u"Existing cmdr:{}".format(json_cmdr), "DEBUG") cmdr_profile.cid = json_cmdr.keys()[0] cmdr_profile.from_dict(json_cmdr.values()[0]) return cmdr_profile
def cmdr(self, cmdr_name): if self.version is None or self.cmdr_name is None: return payload = { "header": self.__api_header(), "events": [self.__api_cmdrprofile(cmdr_name)] } resp = requests.post(self.INARA_ENDPOINT, json=payload) if resp.status_code != requests.codes.ok: EDRLOG.log( u"Failed to obtain cmdr profile from Inara. code={code}, content={content}" .format(code=resp.status_code, content=resp.content), "ERROR") return None EDRLOG.log(u"Obtained a response from the Inara API.", "INFO") try: json_resp = json.loads(resp.content) if json_resp["events"][0]["eventStatus"] == 204: EDRLOG.log( u"cmdr {} was not found via the Inara API.".format( cmdr_name), "INFO") return None elif json_resp["events"][0]["eventStatus"] != requests.codes.ok: EDRLOG.log( u"Error from Inara API. code={code}, content={content}". format(code=resp.status_code, content=resp.content), "ERROR") return None except: EDRLOG.log( u"Malformed cmdr profile response from Inara API? code={code}, content={content}" .format(code=resp.status_code, content=resp.content), "ERROR") return None try: json_resp = json.loads(resp.content)["events"][0]["eventData"] profile = edrcmdrprofile.EDRCmdrProfile() profile.from_inara_api(json_resp) EDRLOG.log(u"Obtained a cmdr profile from Inara API.", "INFO") return profile except: EDRLOG.log( u"Malformed cmdr profile response from Inara API? code={code}, content={content}" .format(code=resp.status_code, content=resp.content), "ERROR") return None