Source code for eclypse.builders.application.deathstarbench.media_service.mpi_services.movie_id

"""MPI workflow for movie identifier resolution."""

from eclypse.remote.communication import mpi
from eclypse.remote.service import Service
from eclypse.utils import format_log_kv


[docs] class MovieIdService(Service): """Resolve movie identifiers for review requests."""
[docs] def __init__(self, service_id: str, store_step: bool = False): """Initialise the movie lookup fixture data.""" super().__init__(service_id, store_step=store_step) self.movies = { "The Matrix": {"movie_id": "m1", "title": "The Matrix"}, "Arrival": {"movie_id": "m2", "title": "Arrival"}, }
[docs] async def step(self): """Handle the next movie-id request.""" await self.handle_request() # pylint: disable=no-value-for-parameter
@mpi.exchange(receive=True, send=True) def handle_request(self, sender_id, body): """Resolve the movie id for compose or lookup requests.""" self.logger.info("Received request | " + format_log_kv(request=body)) movie = self.movies[body["movie_title"]] if body["request_type"] == "lookup_movie": return sender_id, { "response_type": "lookup_movie_response", **movie, } return "TextService", { **body, "movie_id": movie["movie_id"], }