from __future__ import annotations import os import sys from typing import Any from ProviderCore.base import FileProvider from SYS.logger import log class ZeroXZero(FileProvider): """File provider for 0x0.st.""" def upload(self, file_path: str, **kwargs: Any) -> str: from API.HTTP import HTTPClient if not os.path.exists(file_path): raise FileNotFoundError(f"File not found: {file_path}") try: headers = {"User-Agent": "Medeia-Macina/1.0"} with HTTPClient(headers=headers) as client: with open(file_path, "rb") as handle: response = client.post("https://0x0.st", files={"file": handle}) if response.status_code == 200: return response.text.strip() raise Exception(f"Upload failed: {response.status_code} - {response.text}") except Exception as exc: log(f"[0x0] Upload error: {exc}", file=sys.stderr) raise def validate(self) -> bool: return True