import uuid from fastapi import APIRouter, Request, Response, Header from ApiDefaults.config import api_config from Events.user.cluster import UserRouterCluster from ApiControllers.providers.token_provider import TokenProvider user_route = APIRouter(prefix="/user", tags=["User"]) @user_route.post( path="/list", description="List users endpoint", operation_id="5bc09312-d3f2-4f47-baba-17c928706da8", ) def user_list_route( request: Request, response: Response, language: str = Header(None, alias="language"), domain: str = Header(None, alias="domain"), tz: str = Header(None, alias="timezone"), ): """ List users endpoint """ endpoint_code = "5bc09312-d3f2-4f47-baba-17c928706da8" token = request.headers.get(api_config.ACCESS_TOKEN_TAG, None) token_object = TokenProvider.get_dict_from_redis(token=token) event_key = TokenProvider.retrieve_event_codes( endpoint_code=endpoint_code, token=token_object ) headers = { "language": language or "", "domain": domain or "", "eys-ext": f"{str(uuid.uuid4())}", "tz": tz or "GMT+3", "token": token, } event_cluster_matched = UserRouterCluster.get_event_cluster("UserList").match_event( event_key=event_key ) response.headers["X-Header"] = "Test Header GET" if runner_callable := event_cluster_matched.event_callable(): return runner_callable raise ValueError("Event key not found or multiple matches found") @user_route.post( path="/create", description="Create users endpoint", operation_id="08d4b572-1584-47bb-aa42-8d068e5514e7", ) def user_create_route( request: Request, response: Response, language: str = Header(None, alias="language"), domain: str = Header(None, alias="domain"), tz: str = Header(None, alias="timezone"), ): """ Create users endpoint """ endpoint_code = "08d4b572-1584-47bb-aa42-8d068e5514e7" token = request.headers.get(api_config.ACCESS_TOKEN_TAG, None) token_object = TokenProvider.get_dict_from_redis(token=token) event_key = TokenProvider.retrieve_event_codes( endpoint_code=endpoint_code, token=token_object ) headers = { "language": language or "", "domain": domain or "", "eys-ext": f"{str(uuid.uuid4())}", "tz": tz or "GMT+3", "token": token, } event_cluster_matched = UserRouterCluster.get_event_cluster( "UserCreate" ).match_event(event_key=event_key) response.headers["X-Header"] = "Test Header POST" if runner_callable := event_cluster_matched.event_callable(): return runner_callable raise ValueError("Event key not found or multiple matches found") @user_route.post( path="/update", description="Update users endpoint", operation_id="b641236a-928d-4f19-a1d2-5edf611d1e56", ) def user_update_route(request: Request, response: Response): """ Update users endpoint """ endpoint_code = "b641236a-928d-4f19-a1d2-5edf611d1e56" token = request.headers.get(api_config.ACCESS_TOKEN_TAG, None) token_object = TokenProvider.get_dict_from_redis(token=token) event_key = TokenProvider.retrieve_event_codes( endpoint_code=endpoint_code, token=token_object ) headers = { "language": language or "", "domain": domain or "", "eys-ext": f"{str(uuid.uuid4())}", "tz": tz or "GMT+3", "token": token, } event_cluster_matched = UserRouterCluster.get_event_cluster( "UserUpdate" ).match_event(event_key=event_key) response.headers["X-Header"] = "Test Header POST" if runner_callable := event_cluster_matched.event_callable(): return runner_callable raise ValueError("Event key not found or multiple matches found")