Beispiel #1
0
    def encode_command(self, cmd: str, *args, data: Any = None) -> bytes:
        """Encode command to bytes"""
        _cmd = convert_to_bytes(cmd.upper().strip())
        _args = [convert_to_bytes(a) for a in args]
        body_data, params_data = b"", b""

        if len(_args):
            params_data = b" " + b" ".join(_args)

        if data and isinstance(data, (list, tuple)):
            data_encoded = [self._encode_body(part) for part in data]
            num_parts = len(data_encoded)
            payload = struct.pack(">l", num_parts) + b"".join(data_encoded)
            body_data = struct.pack(">l", len(payload)) + payload
        elif data:
            body_data = self._encode_body(data)

        return b"".join((_cmd, params_data, consts.NL, body_data))
def test_convert_to_bytes(value, expected):
    assert convert_to_bytes(value) == expected
def test_convert_to_bytes_with_exception(value):
    with pytest.raises(TypeError):
        convert_to_bytes(value)
Beispiel #4
0
 def _encode_body(data: Any) -> bytes:
     _data = convert_to_bytes(data)
     result = struct.pack(">l", len(_data)) + _data
     return result