import os
import json
from pathlib import Path

import requests
import urllib3
from dotenv import load_dotenv

load_dotenv()

HOST = os.getenv("CPANEL_HOST")
USER = os.getenv("CPANEL_USER")
TOKEN = os.getenv("CPANEL_TOKEN")

PROJECT_DIR = "/home/grpia/apps/deploy-teste"
LOCAL_FILE = Path("sample-project/index.html")

headers = {
    "Authorization": f"cpanel {USER}:{TOKEN}"
}

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

if not LOCAL_FILE.exists():
    raise FileNotFoundError(f"Arquivo local não encontrado: {LOCAL_FILE}")

url = f"{HOST}/execute/Fileman/upload_files"

with LOCAL_FILE.open("rb") as file:
    files = {
        "file-1": (LOCAL_FILE.name, file, "text/html"),
    }

    data = {
        "dir": PROJECT_DIR,
        "overwrite": "1",
    }

    response = requests.post(
        url,
        headers=headers,
        data=data,
        files=files,
        verify=False,
        timeout=60,
    )

print("HTTP:", response.status_code)

try:
    result = response.json()
except ValueError:
    print(response.text)
    raise SystemExit()

print(json.dumps(result, indent=2, ensure_ascii=False))

if response.status_code == 200 and result.get("status") == 1:
    print()
    print("UPLOAD CONCLUÍDO!")
    print(f"{PROJECT_DIR}/{LOCAL_FILE.name}")
else:
    print()
    print("UPLOAD FALHOU.")