def send(self, message): data = message.SerializeToString() if self.chacha: data = self.chacha.encrypt(data) length = variant.write_variant(len(data)) self.transport.write(length + data)
def send_raw(self, data): """Send message to device.""" log_binary(_LOGGER, '>> Send raw', Data=data) if self._chacha: data = self._chacha.encrypt(data) log_binary(_LOGGER, '>> Send raw', Encrypted=data) data = write_variant(len(data)) + data self._transport.write(data)
def _send(self, message): data = message.SerializeToString() _LOGGER.info('<<(DECRYPTED): %s', message) if self.chacha: data = self.chacha.encrypt(data) log_binary(_LOGGER, '<<(ENCRYPTED)', Message=message) length = variant.write_variant(len(data)) self.transport.write(length + data)
def send(self, message): """Send protobuf message to client.""" data = message.SerializeToString() _LOGGER.info("<<(DECRYPTED): %s", message) if self.chacha: data = self.chacha.encrypt(data) log_binary(_LOGGER, "<<(ENCRYPTED)", Message=message) length = variant.write_variant(len(data)) self.transport.write(length + data)
def send(self, message): if not self.transport: return data = message.SerializeToString() if self.chacha: data = self.chacha.encrypt(data) length = variant.write_variant(len(data)) self.transport.write(length + data) log_protobuf(_LOGGER, ">> Send: Protobuf", message)
def send(self, message): """Send message to device.""" serialized = message.SerializeToString() log_binary(_LOGGER, '>> Send', Data=serialized) if self._chacha: serialized = self._chacha.encrypt(serialized) log_binary(_LOGGER, '>> Send', Encrypted=serialized) data = write_variant(len(serialized)) + serialized self._transport.write(data) log_protobuf(_LOGGER, '>> Send: Protobuf', message)
def decode_and_print_message(args): """Decode and print protobuf messages.""" buf = binascii.unhexlify(args.message) if not args.stream: buf = variant.write_variant(len(buf)) + buf while buf: length, raw = variant.read_variant(buf) data = raw[:length] buf = raw[length:] _print_single_message(data, args.unknown_fields) return 0
def _send_raw(self, raw): parsed = protobuf.ProtocolMessage() parsed.ParseFromString(raw) log_binary(_LOGGER, 'ATV->APP', Raw=raw) _LOGGER.info('ATV->APP Parsed: %s', parsed) if self.chacha: raw = self.chacha.encrypt(raw) log_binary(_LOGGER, 'ATV->APP', Encrypted=raw) length = variant.write_variant(len(raw)) try: self.transport.write(length + raw) except Exception: # pylint: disable=broad-except _LOGGER.exception('Failed to send to app')
def send_raw(self, raw): """Send raw data to client.""" parsed = protobuf.ProtocolMessage() parsed.ParseFromString(raw) log_binary(_LOGGER, "ATV->APP", Raw=raw) _LOGGER.info("ATV->APP Parsed: %s", parsed) if self.chacha: raw = self.chacha.encrypt(raw) log_binary(_LOGGER, "ATV->APP", Encrypted=raw) length = variant.write_variant(len(raw)) try: self.transport.write(length + raw) except Exception: # pylint: disable=broad-except _LOGGER.exception("Failed to send to app")
def decode_and_print_message(args): """Decode and print protobuf messages.""" # Import here to allow other parts of script, e.g. message generation to run # without having pyatv installed from pyatv.mrp import variant # pylint: disable=import-outside-toplevel buf = binascii.unhexlify(args.message) if not args.stream: buf = variant.write_variant(len(buf)) + buf while buf: length, raw = variant.read_variant(buf) data = raw[:length] buf = raw[length:] _print_single_message(data, args.unknown_fields) return 0
def test_write_multiple_bytes(self): self.assertEqual(write_variant(8757), b"\xb5\x44") self.assertEqual(write_variant(18757), b"\xc5\x92\x01")
def test_write_single_byte(self): self.assertEqual(write_variant(0x00), b"\x00") self.assertEqual(write_variant(0x35), b"\x35")
def _send(self, message): data = message.SerializeToString() length = variant.write_variant(len(data)) self.transport.write(length + data)
def test_write_multiple_bytes(): assert write_variant(8757) == b"\xb5\x44" assert write_variant(18757) == b"\xc5\x92\x01"
def test_write_single_byte(): assert write_variant(0x00) == b"\x00" assert write_variant(0x35) == b"\x35"