from getGoogleEAB import gen_google_eab
from getZeroSSLEAB import gen_zero_ssl_eab


def get_domains(i_domains):
    domains = []
    for domain in i_domains.split(","):
        domain = domain.strip()
        domains.append(domain)
    return domains

def extract_subdomains(domains):
    exchange = min(domains, key=len)
    return exchange

def get_ca_server(caserver, key_type):
    DEFAULT_LET_ENCRYPT_URL = "https://acme-v02.api.letsencrypt.org/directory"
    urls = {
        "SSL.com": {
            "rsa": "https://acme.ssl.com/sslcom-dv-rsa",
            "ec": "https://acme.ssl.com/sslcom-dv-ecc"
        },
        "Let's Encrypt (Testing)": "https://acme-staging-v02.api.letsencrypt.org/directory",
        "Let's Encrypt": DEFAULT_LET_ENCRYPT_URL,
        "Buypass (Testing)": "https://api.test4.buypass.no/acme/directory",
        "Buypass": "https://api.Buypass.com/acme/directory",
        "ZeroSSL": "https://acme.zerossl.com/v2/DV90",
        "Google (Testing)": "https://dv.acme-v02.test-api.pki.goog/directory",
        "Google": "https://dv.acme-v02.api.pki.goog/directory"
    }
    if caserver in urls:
        if isinstance(urls[caserver], dict):
            return urls[caserver].get(key_type, DEFAULT_LET_ENCRYPT_URL)
        else:
            return urls[caserver]
    return DEFAULT_LET_ENCRYPT_URL

def get_kid_hmac(server):
    if server == "SSL.com":
        return None, None
    elif server == "Let's Encrypt (Testing)":
        return None, None
    elif server == "Let's Encrypt":
        return None, None
    elif server == "Buypass (Testing)":
        return None, None
    elif server == "Buypass":
        return None, None
    elif server == "ZeroSSL":
        kid, hmac = gen_zero_ssl_eab()
        return kid, hmac
    elif server == "Google (Testing)":
        kid, hmac = gen_google_eab(test=True)
        return kid, hmac
    elif server == "Google":
        kid, hmac = gen_google_eab(test=False)
        return kid, hmac
    else:
        return None, None

def write_file(filename, data):
    try:
        with open(filename, 'wb') as f:
            f.write(data)
        print(filename, " successfully written")
    except Exception as e:
        print("Error writing file: ", filename)
        print(e)