import requests def _make_endpoint(path, include=None, exclude=None, trim=None): def _trim(data): if include: data = {k: v for k, v in data.items() if k in include} if exclude: for key in exclude: if key in data: del data[key] return data if not callable(trim): trim = _trim def _get(*args): query = "https://esi.evetech.net/latest/" + path + "?datasource=tranquility" response = requests.get(query.format(*args)) response.raise_for_status() return trim(response.json()) return _get def _trim_killmail(km): del km['attackers'] del km['victim']['items'] del km['victim']['damage_taken'] return km killmail = _make_endpoint("killmails/{}/{}/", trim=_trim_killmail) type = _make_endpoint("universe/types/{}/", include=['type_id', 'name', 'group_id'])