import requests
from LoggingFormatter import logger


def checkIfRequestSuccessfull(response: requests.Response, proxy_provider: str="None", skins_or_inspect_links: str="inspect_links") -> requests.Response | bool:
    if response is None:
        return None
    if response.text is None:
        logger.warning(proxy_provider + ": Response Text is None for " + response.url)
        return None
    if response.status_code != 200:
        logger.warning(proxy_provider + ": Status Code is not 200 for " + response.url)
        return None
    
    if skins_or_inspect_links == "price":
        return response

    try:
        json_page = response.json()
    except Exception as e:
        logger.warning(proxy_provider + ": couldn't parse JSON, exception: " + str(e) + " for " + response.url)
        return None

    if json_page is None:
        logger.warning(proxy_provider + ": json_page is None for " + response.url)
        return None

    if skins_or_inspect_links == "skins":
        return response
    
    if "listinginfo" in json_page:
        if json_page["total_count"] == 0:
            logger.warning(proxy_provider + ": 0 skins available? for " + response.url)
            return None
        if len(json_page["listinginfo"]) == 0:
            logger.warning(proxy_provider + ": listinginfo is 0 for " + response.url)
            return None

    else:
        logger.warning(proxy_provider + ": listinginfo not in json_page for " + response.url)
        return None
    
    return response
