summaryrefslogtreecommitdiffhomepage
path: root/salvager/esi.py
blob: 5ded1d47a7aac45c03d5d6f76b87b10fecf39cda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import requests


def _make_endpoint(path, include=None, exclude=None, trim=None, method=requests.get):
	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 _method(*args, **kwargs):
		query = "https://esi.evetech.net/latest/" + path + "?datasource=tranquility"
		response = method(query.format(*args), **kwargs)
		response.raise_for_status()
		return trim(response.json())

	return _method


def _trim_killmail(km):
	del km['attackers']
	del km['victim']['items']
	del km['victim']['damage_taken']
	return km


def _trim_names(names):
	for name in names:
		del name['category']
	return names


killmail = _make_endpoint("killmails/{}/{}/", trim=_trim_killmail)
type = _make_endpoint("universe/types/{}/", include=['type_id', 'name', 'group_id'])
system = _make_endpoint(
	"universe/systems/{}/", include=['system_id', 'constellation_id', 'name', 'position', 'security_status'])
constellation = _make_endpoint("universe/constellations/{}/", include=['region_id', 'name'])
region = _make_endpoint("universe/regions/{}/", include=['name'])
names = _make_endpoint("universe/names/", method=requests.post, trim=_trim_names)
corporation = _make_endpoint("corporations/{}/", include=['corporation_id', 'name', 'ticker'])
alliance = _make_endpoint("alliances/{}/", include=['alliance_id', 'name', 'ticker'])