(self)
| 59 | class EsiAccess: |
| 60 | server_meta = {} |
| 61 | def __init__(self): |
| 62 | self.settings = EsiSettings.getInstance() |
| 63 | self.default_server_name = self.settings.get('server') |
| 64 | self.default_server_base = config.supported_servers[self.default_server_name] |
| 65 | # session request stuff |
| 66 | self._session = Session() |
| 67 | self._basicHeaders = { |
| 68 | 'Accept': 'application/json', |
| 69 | 'User-Agent': ( |
| 70 | 'pyfa v{}'.format(config.version) |
| 71 | ) |
| 72 | } |
| 73 | self._session.headers.update(self._basicHeaders) |
| 74 | self._session.proxies = NetworkSettings.getInstance().getProxySettingsInRequestsFormat() |
| 75 | |
| 76 | self.mem_cached_session = {} |
| 77 | |
| 78 | # Set up cached session. This is only used for SSO meta data for now, but can be expanded to actually handle |
| 79 | # various ESI caching (using ETag, for example) in the future |
| 80 | self.cached_session = CachedSession( |
| 81 | os.path.join(config.savePath, config.ESI_CACHE), |
| 82 | backend="sqlite", |
| 83 | cache_control=True, # Use Cache-Control headers for expiration, if available |
| 84 | expire_after=timedelta(days=1), # Otherwise expire responses after one day |
| 85 | stale_if_error=True, # In case of request errors, use stale cache data if possible |
| 86 | ) |
| 87 | self.cached_session.headers.update(self._basicHeaders) |
| 88 | self.cached_session.proxies = NetworkSettings.getInstance().getProxySettingsInRequestsFormat() |
| 89 | self.init(self.default_server_base) |
| 90 | |
| 91 | def init(self, server_base): |
| 92 | self.server_base: config.ApiServer = server_base |
no test coverage detected