| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- from services.api_client import JsonTransport
- class ScopedAuthClient:
- def __init__(self, base_url, client_type, session_store, transport=None, timeout=10):
- self.base_url = (base_url or '').rstrip('/')
- self.client_type = client_type
- self.session_store = session_store
- self.transport = transport or JsonTransport()
- self.timeout = int(timeout)
- def exchange(self, gateway_session_id, auth_code):
- session_key = self.build_session_key(gateway_session_id)
- response = self.transport.post_json(
- self.base_url + '/mcp/auth/exchange',
- {
- 'auth_code': auth_code,
- 'client_type': self.client_type,
- 'session_key': session_key,
- },
- {},
- self.timeout,
- )
- data = response.get('data') or {}
- token = data.get('mcp_token')
- if (response.get('code') or '') == 'MCP_0000' and token:
- self.session_store.save(gateway_session_id, {
- 'session_key': session_key,
- 'mcp_token': token,
- 'admin_id': data.get('admin_id'),
- 'company_id': data.get('company_id'),
- 'client_type': self.client_type,
- 'expire_time': data.get('expire_time'),
- })
- return response
- @staticmethod
- def build_session_key(gateway_session_id):
- return 'gws_' + str(gateway_session_id or '').strip()
|