import json MAX_MESSAGE_SIZE = 1024 * 1024 # 1 MB def decode_message(raw_line: str) -> dict: if raw_line is None: raise ValueError("Mensagem ausente") if len(raw_line) > MAX_MESSAGE_SIZE: raise ValueError("Mensagem excede tamanho máximo permitido") raw_line = raw_line.strip() if not raw_line: raise ValueError("Mensagem vazia") try: data = json.loads(raw_line) except json.JSONDecodeError as e: raise ValueError(f"JSON inválido: {e.msg}") from e if not isinstance(data, dict): raise ValueError("Mensagem JSON deve ser um objeto") return data def encode_message(data: dict) -> bytes: if not isinstance(data, dict): raise ValueError("Resposta deve ser um objeto dict") return ( json.dumps(data, ensure_ascii=False, separators=(",", ":")) + "\n" ).encode("utf-8")