auth_client.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from services.api_client import JsonTransport
  2. class AuthClient:
  3. def __init__(self, base_url, client_type, token_store, transport=None, timeout=10, session_key=''):
  4. self.base_url = (base_url or '').rstrip('/')
  5. self.client_type = client_type
  6. self.token_store = token_store
  7. self.transport = transport or JsonTransport()
  8. self.timeout = int(timeout)
  9. self.session_key = str(session_key or '').strip()
  10. def refresh(self, mcp_token):
  11. response = self.transport.post_json(
  12. self.base_url + '/mcp/auth/refresh',
  13. {'mcp_token': mcp_token},
  14. {'Authorization': 'Bearer {0}'.format(mcp_token)},
  15. self.timeout,
  16. )
  17. self._persist_token(response)
  18. return response
  19. def revoke(self, mcp_token):
  20. response = self.transport.post_json(
  21. self.base_url + '/mcp/auth/revoke',
  22. {'mcp_token': mcp_token},
  23. {'Authorization': 'Bearer {0}'.format(mcp_token)},
  24. self.timeout,
  25. )
  26. if (response.get('code') or '') == 'MCP_0000':
  27. self.token_store.clear()
  28. return response
  29. def _persist_token(self, response):
  30. data = response.get('data') or {}
  31. token = data.get('mcp_token')
  32. expire_time = data.get('expire_time')
  33. if token and expire_time:
  34. self.token_store.save(token, expire_time)