def deserialize(self, data): """Deserialize a manifest (compressed or uncompressed) :param data: manifest data :type data: bytes """ try: with ZipFile(BytesIO(data)) as zf: data = zf.read(zf.filelist[0]) except BadZipFile: pass data = StructReader(data) magic, length = data.unpack('<II') if magic != DepotManifest.PROTOBUF_PAYLOAD_MAGIC: raise Exception("Expecting protobuf payload") self.payload = ContentManifestPayload() self.payload.ParseFromString(data.read(length)) magic, length = data.unpack('<II') if magic != DepotManifest.PROTOBUF_METADATA_MAGIC: raise Exception("Expecting protobuf metadata") self.metadata = ContentManifestMetadata() self.metadata.ParseFromString(data.read(length)) magic, length = data.unpack('<II') if magic != DepotManifest.PROTOBUF_SIGNATURE_MAGIC: raise Exception("Expecting protobuf signature") self.signature = ContentManifestSignature() self.signature.ParseFromString(data.read(length)) magic, = data.unpack('<I') if magic != DepotManifest.PROTOBUF_ENDOFMANIFEST_MAGIC: raise Exception("Expecting end of manifest")
def load(self, data): buf, self.memberList = StructReader(data), list() (self.steamIdChat, self.steamIdFriend, self.chatRoomType, self.steamIdOwner, self.steamIdClan, self.chatFlags, self.enterResponse, self.numMembers ) = buf.unpack("<QQIQQ?II") self.chatRoomName = buf.read_cstring().decode('utf-8') for _ in range(self.numMembers): self.memberList.append(vdf.binary_loads(buf.read(64))['MessageObject']) self.UNKNOWN1, = buf.unpack("<I")
def load(self, data): buf, self.memberList = StructReader(data), list() (self.steamIdChat, self.steamIdFriend, self.chatRoomType, self.steamIdOwner, self.steamIdClan, self.chatFlags, self.enterResponse, self.numMembers) = buf.unpack("<QQIQQ?II") self.chatRoomName = buf.read_cstring().decode('utf-8') for _ in range(self.numMembers): self.memberList.append( vdf.binary_loads(buf.read(64))['MessageObject']) self.UNKNOWN1, = buf.unpack("<I")