frostfs-sdk-python/frostfs_sdk/models/mappers/session_mapper.py
Ilyas Niyazov 297e107b10 [#3] Added generate proto script create container method
Signed-off-by: Ilyas Niyazov <i.niyazov@yadro.com>
2025-03-25 11:13:48 +03:00

44 lines
1.7 KiB
Python

from google.protobuf.message import DecodeError
from frostfs_sdk.protos.models.session import types_pb2 as types_pb2_session
class SessionMapper:
@staticmethod
def serialize(token: types_pb2_session.SessionToken) -> bytes:
"""
Serializes a SessionToken object into a byte array.
:param token: A SessionToken Protobuf object.
:return: A byte array representing the serialized SessionToken.
:raises ValueError: If the input token is None.
:raises Exception: If serialization fails.
"""
if token is None:
raise ValueError(f"Input parameter is missing: {types_pb2_session.SessionToken.__name__}")
try:
# Serialize the token to bytes
return token.SerializeToString()
except Exception as e:
raise Exception(f"Serialization failed: {str(e)}")
@staticmethod
def deserialize_session_token(bytes_data: bytes) -> types_pb2_session.SessionToken:
"""
Deserializes a byte array into a SessionToken object.
:param bytes_data: A byte array representing the serialized SessionToken.
:return: A SessionToken Protobuf object.
:raises ValueError: If the input byte array is None or empty.
:raises Exception: If deserialization fails.
"""
if not bytes_data:
raise ValueError(f"Input parameter is missing: {types_pb2_session.SessionToken.__name__}")
try:
# Deserialize the byte array into a SessionToken object
session_token = types_pb2_session.SessionToken()
session_token.ParseFromString(bytes_data)
return session_token
except DecodeError as e:
raise Exception(f"Deserialization failed: {str(e)}")