"""Call for ows-product to get status of release.""" from oto import response from owsrequest import request from sentry_sdk import capture_exception from product_workflow.constants import error from product_workflow.constants import services def _get_product(resource): """Get product details using ows-product resource. Args: resource (str): URI for getting product info from ows-product service Returns: message: Dict of product details. """ try: ows_product_response = request.get(services.OWS_PRODUCT, resource) except Exception as ex: capture_exception() return response.create_error_response( code=error.INTERNAL_ERROR, message=str(ex), status=500) if ows_product_response.status_code == 200: product_details = ows_product_response.json() return response.Response(message=product_details) if ows_product_response.status_code == 404: return response.create_not_found_response( message=str(error.ERROR_RELEASE_NOT_FOUND)) return response.create_fatal_response() def get_product_by_id(product_id): """Verify valid product for provided product_id and return its details. Args: product_id (Integer): Unique identification for product. Returns: message: Dict of product details. """ resource = services.OWS_PRODUCT_BY_PRODUCT_ID.format( product_id=product_id) return _get_product(resource)