import os
import boto3
from pathlib import Path
from dotenv import load_dotenv

load_dotenv()

DEFAULT_LINUX_DIR = "/srv/ww/pomind-versions"
DEFAULT_WINDOWS_DIR = r"C:\\inetpub\\pomind\\versoes"

BUCKET = os.getenv("BUCKET")
BUCKET_ENDPOINT = os.getenv("BUCKET_ENDPOINT")
BUCKET_KEY_ID = os.getenv("BUCKET_KEY_ID")
BUCKET_APP_KEY = os.getenv("BUCKET_APP_KEY")

s3_client = boto3.client(
    "s3",
    endpoint_url=f"https://{BUCKET_ENDPOINT}",
    aws_access_key_id=BUCKET_KEY_ID,
    aws_secret_access_key=BUCKET_APP_KEY,
    region_name="us-east-005",
)


def get_versions_base_dir() -> str:
    env_dir = os.getenv("VERSOES_DIR")
    if env_dir:
        return env_dir
    return DEFAULT_WINDOWS_DIR if os.name == "nt" else DEFAULT_LINUX_DIR


def resolve_version_path(path_or_name: str) -> str:
    base_dir = Path(get_versions_base_dir()).resolve()
    candidate = Path(path_or_name)

    if not candidate.is_absolute():
        candidate = base_dir / candidate

    candidate = candidate.resolve()

    if candidate != base_dir and base_dir not in candidate.parents:
        raise ValueError("Caminho de arquivo inválido")

    return str(candidate)


def get_b2_client():
    return s3_client


def get_public_url(key: str) -> str:
    return f"https://{BUCKET_ENDPOINT}/file/{BUCKET}/{key}"
