| 1234567891011121314151617181920212223242526272829303132333435 |
- import json
- from utils.security import hash_gateway_session_id
- class GatewaySessionStore:
- def __init__(self, client, prefix='fms:mcp:gateway:', ttl_seconds=2592000):
- self.client = client
- self.prefix = str(prefix or 'fms:mcp:gateway:')
- self.ttl_seconds = int(ttl_seconds or 2592000)
- def key_for(self, gateway_session_id):
- return self.prefix.rstrip(':') + ':session:' + hash_gateway_session_id(gateway_session_id)
- def save(self, gateway_session_id, session):
- payload = dict(session or {})
- payload['gateway_session_id_hash'] = hash_gateway_session_id(gateway_session_id)
- self.client.set(
- self.key_for(gateway_session_id),
- json.dumps(payload, ensure_ascii=False),
- ex=self.ttl_seconds,
- )
- return payload
- def get(self, gateway_session_id):
- raw = self.client.get(self.key_for(gateway_session_id))
- if raw is None or raw == '':
- return None
- if isinstance(raw, bytes):
- raw = raw.decode('utf-8')
- return json.loads(raw)
- def delete(self, gateway_session_id):
- return self.client.delete(self.key_for(gateway_session_id))
|