Source code for eclypse.builders.application.deathstarbench.hotel_reservation.mpi_services.profile
"""MPI workflow for user profile retrieval."""
from eclypse.remote.communication import mpi
from eclypse.remote.service import Service
from eclypse.utils import format_log_kv
[docs]
class ProfileService(Service):
"""Return a booking profile for the current user."""
[docs]
async def step(self):
"""Handle the next profile request from the frontend."""
await self.frontend_request() # pylint: disable=no-value-for-parameter
@mpi.exchange(receive=True, send=True)
def frontend_request(self, sender_id, body):
"""Return a compact traveller profile for the requested user."""
self.logger.info("Received request | " + format_log_kv(request=body))
return sender_id, {
"response_type": "profile_response",
"user": {
"user_id": body["user_id"],
"name": "Ada Lovelace",
"loyalty_level": "gold",
},
}