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.
 
 
 
 
 

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