"""Interface for the ows-permissions microservice.""" from flask import g from oto import response from owsrequest import request as requests from sentry_sdk import capture_exception from product.constants import header from product.constants import service_name class ResourceType: """Type of resources to be requested from ows-permissions.""" ALL = 'all' LABEL = 'label' def get_profile_resources( profile_id: int, profile_type: str, resource_type: str = ResourceType.ALL ) -> response.Response: """Get resources available for the profile. Args: profile_id (int): unique identifier of the profile. profile_type (stt): type of the profile. resource_type (str): type of the resource to be retrieved (check ResourceType for available options). Returns: Response: Response containing 'items' with the list of resources. """ try: result = requests.get( service_name.OWS_PERMISSIONS, f"/admin/profile-type/{profile_type}/profile/{profile_id}" f"/resource/{resource_type}", headers={"Content-Type": header.CONTENT_TYPE}, ) except Exception as exception: capture_exception(exception) return response.create_fatal_response( message=f"Could not connect to {service_name.OWS_PERMISSIONS}." ) if result.status_code != 200: result_json = result.json() message = (f"{service_name.OWS_PERMISSIONS} returned unexpected " f"status_code of {result.status_code}") g.log.error(message) return response.create_error_response( result_json["code"], result_json["message"], status=result.status_code ) return response.Response(result.json())