44 lines
1.7 KiB
Python
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)}")
|