A corporation manager and dashboard for EVE Online
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

64 lines
1.7 KiB

  1. # -*- coding: utf-8 -*-
  2. import platform
  3. import requests
  4. from .clock import Clock
  5. from .esi import EVESwaggerInterface
  6. from .image import ImageServer
  7. from .sso import SSOManager
  8. from .zkill import ZKillboard
  9. from .. import __release__, baseLogger
  10. __all__ = ["EVE"]
  11. class EVE:
  12. """Interface to EVE's various APIs."""
  13. def __init__(self, config):
  14. session = requests.Session()
  15. agent = self._get_user_agent(config.get("site.contact"))
  16. session.headers["User-Agent"] = agent
  17. logger = baseLogger.getChild("eve")
  18. self._clock = Clock()
  19. self._esi = EVESwaggerInterface(session, logger.getChild("esi"))
  20. self._image = ImageServer()
  21. self._sso = SSOManager(session, logger.getChild("sso"))
  22. self._zkill = ZKillboard(session, logger.getChild("zkill"))
  23. @staticmethod
  24. def _get_user_agent(contact):
  25. """Return the user agent when accessing APIs."""
  26. template = ("Calefaction/{} ({}; Python/{}; {}; "
  27. "https://github.com/earwig/calefaction)")
  28. return template.format(
  29. __release__, requests.utils.default_user_agent(),
  30. platform.python_version(), contact)
  31. @property
  32. def clock(self):
  33. """The Clock API module."""
  34. return self._clock
  35. @property
  36. def esi(self):
  37. """The EVE Swagger Interface API module."""
  38. return self._esi
  39. @property
  40. def image(self):
  41. """The ImageServer API module."""
  42. return self._image
  43. @property
  44. def sso(self):
  45. """The Single Sign-On API module."""
  46. return self._sso
  47. @property
  48. def zkill(self):
  49. """The zKillboard API module."""
  50. return self._zkill