"""Logic of API requests.""" from typing import Callable from typing import Dict from typing import Tuple from src.logic.events_config import events_config from src.common.types import ApiRequestType from src.common.types import BaseAPIRequest def get_api_request(record: Dict) -> BaseAPIRequest: """Prepare store API request. Args: record: A single record of an API request. """ # TODO: Remove when all messages use new key (the "request_type" one) try: api_request_type = ApiRequestType(**record['api_request']) except KeyError: api_request_type = ApiRequestType(**record['request_type']) api_request_config = events_config[api_request_type.type] request_class = api_request_config['request_class'] request_payload_class = api_request_config['request_payload_class'] return request_class( request_type=api_request_type, payload=request_payload_class(**record['payload'])) def get_api_response_handlers(api_request) -> Tuple[Callable]: """Get store API response handlers. Args: api_request: The source API request. Returns: A list of API response handlers. """ api_request_config = events_config[api_request.request_type.type] return api_request_config['response_handlers']