gateway_session_store.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import json
  2. from utils.security import hash_gateway_session_id
  3. class GatewaySessionStore:
  4. def __init__(self, client, prefix='fms:mcp:gateway:', ttl_seconds=2592000):
  5. self.client = client
  6. self.prefix = str(prefix or 'fms:mcp:gateway:')
  7. self.ttl_seconds = int(ttl_seconds or 2592000)
  8. def key_for(self, gateway_session_id):
  9. return self.prefix.rstrip(':') + ':session:' + hash_gateway_session_id(gateway_session_id)
  10. def save(self, gateway_session_id, session):
  11. payload = dict(session or {})
  12. payload['gateway_session_id_hash'] = hash_gateway_session_id(gateway_session_id)
  13. self.client.set(
  14. self.key_for(gateway_session_id),
  15. json.dumps(payload, ensure_ascii=False),
  16. ex=self.ttl_seconds,
  17. )
  18. return payload
  19. def get(self, gateway_session_id):
  20. raw = self.client.get(self.key_for(gateway_session_id))
  21. if raw is None or raw == '':
  22. return None
  23. if isinstance(raw, bytes):
  24. raw = raw.decode('utf-8')
  25. return json.loads(raw)
  26. def delete(self, gateway_session_id):
  27. return self.client.delete(self.key_for(gateway_session_id))