"""Logic for ddex generation check.""" import requests import config from typing import Tuple DDEX_OK = 'DDEX_CHECK_SUCCESS' DDEX_WARN = 'DDEX_CHECK_WARN' DDEX_ERROR = 'DDEX_CHECK_ERROR' DDEX_UNKNOWN = 'DDEX_CHECK_UNKNOWN' def check_ddex_generation(upc: int) -> Tuple[str, str]: """Check if DDEX generation is successful for given UPC. Args: upc: UPC to check DDEX generation for. Returns: DDEX Response Status, DDEX Response Info - DDEX_OK if DDEX generation is successful for given UPC - DDEX_WARN if DDEX generation is unsuccesful for reasons other than product metadata - DDEX_ERROR if generation is unsuccessful and not DDEX_WARN - DDEX_UNKNOWN if DDEX response is empty """ for url in config.DDEX_GENERATION_URLS: response = requests.get(url.format(upc=upc)) if response.status_code == 200: return (DDEX_OK, 'SUCCESS') if response.status_code == 500 and \ any(err in response.text for err in config.DDEX_ERRORS_TO_IGNORE): return (DDEX_WARN, response.text) if response.status_code == 500 and not response.text: # Temporary DDEX unavailability return (DDEX_UNKNOWN, response.text) return (DDEX_ERROR, response.text)