"""Utility Functions for Resource Type Actions.""" from typing import Any, Dict, List from pdp.constants.constants import AUTH_EFFECT_ALLOW, AuthEffect from pdp.fastapi.schemas.check_resource_type_actions import ( CheckResourceTypeActionResult, ) from pdp.fastapi.schemas.identity import ( CheckResourcesResponse, ) def _build_resource_type_action_results_list( check_resource_action_result_dict: Dict[Any, AuthEffect], check_response: CheckResourcesResponse, ) -> List[CheckResourceTypeActionResult]: """Build a list of CheckResourceTypeActionResult objects from a response.""" # Update check_resource_action_result_dict with any AuthEffect.ALLOW results for result in check_response.resources: if result.effect == AUTH_EFFECT_ALLOW and check_resource_action_result_dict.get( (result.resource.resource_type, result.action) ): check_resource_action_result_dict[ (result.resource.resource_type, result.action) ] = result.effect resource_type_action_responses = [] for result, effect in check_resource_action_result_dict.items(): resource_type, action = result resource_type_action_responses.append( CheckResourceTypeActionResult( resource_type=resource_type, action=action, effect=effect ) ) return resource_type_action_responses