import time
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import json
import time
from LoggingFormatter import logger
from seleniumwire.utils import decode
import seleniumwire.undetected_chromedriver as uc

def getItemInfo(inspect_link: str):
    logger.error("SELENIUMNEXECUTOR TRYING TO GET: " + str(inspect_link))
    chrome_options = uc.ChromeOptions()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--remote-debugging-pipe")
    chrome_options.add_argument("--headless=new")
    chrome_options.add_argument("--ignore-ssl-errors=yes")
    chrome_options.add_argument("--ignore-certificate-errors")
    chrome_options.add_argument("--blink-settings=imagesEnabled=false")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--disable-gpu")
    #options = {
    #    "proxy": {
    #        "http": "http://j3cJu243873:NR4nqNKCxju5mlIB@unblocker.iproyal.com:12323",
    #        "https": "http://j3cJu243873:NR4nqNKCxju5mlIB@unblocker.iproyal.com:12323",
    #        "no_proxy": "localhost,127.0.0.1",
    #    }
    #}
    options = {
        "proxy": {
            "http": "http://kroisalex8:YIcLVEa3mdM4e7KsIW4W@rp-core.evomi.com:1000",
            "https": "http://kroisalex8:YIcLVEa3mdM4e7KsIW4W@rp-core.evomi.com:1000",
            "no_proxy": "localhost,127.0.0.1",
        }
    }

    chrome_options.binary_location = "chrome-linux64/chrome"
    webdriver_service = Service("chromedriver-linux64/chromedriver")

    browser = webdriver.Chrome(
        service=webdriver_service, options=chrome_options, seleniumwire_options=options
    )
    browser.execute_cdp_cmd("Network.enable", {})

    try:
        browser.get("https://csfloat.com/checker")

        url_input = WebDriverWait(browser, 20).until(
            EC.element_to_be_clickable((By.ID, "mat-input-0"))
        )

        browser.execute_script(f"arguments[0].value = '{inspect_link}'", url_input)
        browser.execute_script(
            "arguments[0].dispatchEvent(new Event('input'))", url_input
        )

        time.sleep(5)

        iteminfo = None
        for res in browser.requests:
            if res.response:
                aids = str(
                    decode(
                        res.response.body,
                        res.response.headers.get("Content-Encoding", "identity"),
                    )
                )
                if aids.startswith('b\'{"iteminfo":'):
                    dreck = (
                        str(aids[2:-4].strip().replace("\\xe2\\x84\\xa2", "™") + "}")
                        .encode("utf-8")
                        .decode("unicode_escape")
                    )
                    iteminfo = json.loads(dreck)
                    break
        time.sleep(2)
        browser.delete_all_cookies()
        browser.quit()
        return iteminfo
    except Exception as e:
        logger.error("SELENIUMEXECUTOR FUCKED UP: " + str(e))
        browser.quit()
        return None
    finally:
        if browser:
            browser.quit()
