core.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from .constants import Endpoint
  2. from .objects import Match, Status, Player, Lifetime
  3. import requests
  4. class Battlegrounds:
  5. def __init__(self, api_key, region):
  6. self.api_key = api_key
  7. self.region = region
  8. self.session = Session(api_key)
  9. self.playerIdCache = []
  10. def matches(self):
  11. json = self.session.get(Endpoint.matches.format(region=self.region))
  12. return Match(json)
  13. def player(self, player_name):
  14. for player in self.playerIdCache:
  15. if player.name == player_name:
  16. print("looked up player id from cache")
  17. return player
  18. json = self.session.get(Endpoint.player_lookup.format(name=player_name))
  19. self.playerIdCache.append(Player(json))
  20. return Player(json)
  21. def lifetime(self, player_id):
  22. json = self.session.get(Endpoint.lifetime.format(id=player_id))
  23. return Lifetime(json)
  24. @staticmethod
  25. def status():
  26. response = requests.get(f'{Endpoint.base}{Endpoint.status}')
  27. if response.status_code == 200:
  28. return Status(response.json())
  29. else:
  30. response.raise_for_status() # Update when we know of other responses
  31. class Session:
  32. def __init__(self, api_key):
  33. self.session = requests.Session()
  34. self.session.headers.update({
  35. 'Authorization': api_key,
  36. 'Accept': 'application/vnd.api+json'
  37. })
  38. def get(self, endpoint):
  39. response = self.session.get(f'{Endpoint.base}{endpoint}')
  40. if response.status_code == 200:
  41. return response.json()
  42. else:
  43. response.raise_for_status()