async def push(self, src_paths: List[str], container: FileContainer, dest_path: str) -> None: async with self.stub.push.open() as stream: await stream.send_message( PushRequest(inner=PushRequest.Inner( bundle_id=file_container_to_bundle_id_deprecated( container), dst_path=dest_path, container=file_container_to_grpc(container), ))) if self.is_local: for src_path in src_paths: await stream.send_message( PushRequest(payload=Payload(file_path=src_path))) await stream.end() await stream.recv_message() else: await drain_to_stream( stream=stream, generator=stream_map( generate_tar(paths=src_paths, verbose=self._is_verbose), lambda chunk: PushRequest(payload=Payload(data=chunk)), ), logger=self.logger, )
async def daemon(client: CompanionClient, stream: Stream[AddMediaResponse, AddMediaRequest]) -> None: async with client.stub.add_media.open() as companion: if client.is_local: generator = stream else: paths = [request.payload.file_path async for request in stream] generator = stream_map( generate_tar(paths=paths, place_in_subfolders=True), lambda chunk: AddMediaRequest(payload=Payload(data=chunk)), ) response = await drain_to_stream(stream=companion, generator=generator, logger=client.logger) await stream.send_message(response)
async def add_media(self, file_paths: List[str]) -> None: async with self.get_stub() as stub, stub.add_media.open() as stream: if none_throws(self.companion_info).is_local: for file_path in file_paths: await stream.send_message( AddMediaRequest(payload=Payload(file_path=file_path))) await stream.end() await stream.recv_message() else: generator = stream_map( generate_tar(paths=file_paths, place_in_subfolders=True), lambda chunk: AddMediaRequest(payload=Payload(data=chunk)), ) await drain_to_stream(stream=stream, generator=generator, logger=self.logger)
async def daemon(client: CompanionClient, stream: Stream[PushResponse, PushRequest]) -> None: async with client.stub.push.open() as companion: await companion.send_message(await stream.recv_message()) if client.is_local: generator = stream else: paths = [request.payload.file_path async for request in stream] generator = stream_map( generate_tar(paths=paths), lambda chunk: PushRequest(payload=Payload(data=chunk)), ) response = await drain_to_stream(stream=companion, generator=generator, logger=client.logger) await stream.send_message(response)
async def add_media(self, file_paths: List[str]) -> None: async with self.stub.add_media.open() as stream: if self.is_local: for file_path in file_paths: await stream.send_message( AddMediaRequest(payload=Payload(file_path=file_path))) await stream.end() await stream.recv_message() else: self.logger.info(f"Adding media from {file_paths}") generator = stream_map( generate_tar( paths=file_paths, place_in_subfolders=True, verbose=self._is_verbose, ), lambda chunk: AddMediaRequest(payload=Payload(data=chunk)), ) await drain_to_stream(stream=stream, generator=generator, logger=self.logger)
async def push(self, src_paths: List[str], bundle_id: str, dest_path: str) -> None: async with self.get_stub() as stub, stub.push.open() as stream: await stream.send_message( PushRequest(inner=PushRequest.Inner(bundle_id=bundle_id, dst_path=dest_path))) if none_throws(self.companion_info).is_local: for src_path in src_paths: await stream.send_message( PushRequest(payload=Payload(file_path=src_path))) await stream.end() await stream.recv_message() else: await drain_to_stream( stream=stream, generator=stream_map( generate_tar(paths=src_paths), lambda chunk: PushRequest(payload=Payload(data=chunk)), ), logger=self.logger, )