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

"""REST endpoints for movie identifier resolution."""

from eclypse.remote.communication import rest
from eclypse.remote.service import RESTService
from eclypse.utils import format_log_kv


[docs] class MovieIdService(RESTService): """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] @rest.endpoint("/compose", "POST") async def compose(self, movie_title: str, **payload): """Resolve the movie id and forward the request to text parsing.""" self.logger.info("Received request | " + format_log_kv(movie_title=movie_title)) movie = self.movies[movie_title] response = await self.rest.post( "TextService/compose", **payload, movie_title=movie_title, movie_id=movie["movie_id"], ) self.logger.info( "Received response | " + format_log_kv(source="TextService", body=response.body) ) return 200, response.body
[docs] @rest.endpoint("/lookup", "GET") def lookup(self, movie_title: str, **_): """Return the movie descriptor for the requested title.""" self.logger.info("Received request | " + format_log_kv(movie_title=movie_title)) return 200, self.movies[movie_title]