"""Model for ows-product.""" import logging from typing import Any import config import requests from src.constants import urls from src.utils.document import cleanup_unicode def get_product_document(product_id: int) -> dict[str, Any]: """Get information about product from ows-product. Args: product_id (int): product id. Returns: dict: information about product. """ result: dict[str, Any] = {} if not product_id: return result url = urls.SERVICE_URL.format( environment=config.ENVIRONMENT, service_name=urls.OWS_PRODUCT_SERVICE_NAME, path=urls.OWS_PRODUCT_DOCUMENT_ENDPOINT.format(product_id), ) response = requests.get(url) if response.status_code not in (200, 404): logging.exception("Failed to get product information from ows-product.") raise requests.RequestException(urls.OWS_PRODUCT_ERROR) if response.status_code == 200: result = response.json() return result def get_release_info(release_id: int) -> dict[str, Any]: """Get information about product from ows-product. Args: release_id (int): product id. Returns: dict: information about product. """ result = { "release_name": "", "release_status": "", "upc": 0, "vendor_id": 0, "subaccount_id": 0, "deletions": "N", "vendorUUID": "", "subaccountUUID": "", "companyBrandUUID": "", "parentCompanyUUID": "", } if not release_id: return result url = urls.SERVICE_URL.format( environment=config.ENVIRONMENT, service_name=urls.OWS_PRODUCT_SERVICE_NAME, path=urls.OWS_PRODUCT_ENDPOINT.format(release_id), ) response = requests.get(url) if response.status_code not in (200, 404): logging.exception("Failed to get release information from ows-product.") raise Exception(urls.OWS_PRODUCT_ERROR) if response.status_code == 200: info = response.json() result["release_name"] = cleanup_unicode(info["product_name"]) result["release_status"] = info["status"] result["upc"] = info["upc"] result["vendor_id"] = info["vendor_id"] result["subaccount_id"] = info["subaccount_id"] result["deletions"] = info["deletions"] result["vendorUUID"] = info.get("vendorUUID") result["subaccountUUID"] = info.get("subaccountUUID") result["companyBrandUUID"] = info.get("companyBrandUUID") result["parentCompanyUUID"] = info.get("parentCompanyUUID") if info.get("spatial_upc"): result["spatial_upc"] = info["spatial_upc"] if info.get("spatial_isrc_list"): result["spatial_isrc_list"] = info["spatial_isrc_list"] return result