A corporation manager and dashboard for EVE Online
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

64 行
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