diff --git a/pyzxz/pyzxz.py b/pyzxz/pyzxz.py index 0d72445..aff3217 100644 --- a/pyzxz/pyzxz.py +++ b/pyzxz/pyzxz.py @@ -1,5 +1,4 @@ import aiohttp -import asyncio from pathlib import Path from typing import Union @@ -14,24 +13,25 @@ class ZeroXZero: - Check service availability """ - ENDPOINT_URL = "https://0x0.st" HEADERS = { "User-Agent": "pyzxz-uploader/1.0 (https://github.com/yourrepo)" } - @staticmethod - async def upload(file_path: Union[str, Path]) -> str: + def __init__(self, endpoint_url: str = "https://0x0.st"): + self.endpoint_url = endpoint_url + + async def upload(self, file_path: Union[str, Path]) -> str: file_path = Path(file_path) if not file_path.exists(): raise FileNotFoundError(f"No such file: {file_path}") - async with aiohttp.ClientSession(headers=ZeroXZero.HEADERS) as session: + async with aiohttp.ClientSession(headers=self.HEADERS) as session: with file_path.open("rb") as f: data = aiohttp.FormData() data.add_field("file", f, filename=file_path.name) async with session.post( - ZeroXZero.ENDPOINT_URL, + self.endpoint_url, data=data ) as response: text = await response.text() @@ -39,13 +39,12 @@ class ZeroXZero: return text.strip() raise ValueError(f"Upload failed: {text.strip()}") - @staticmethod - async def upload_from_bytes(data: bytes, filename: str) -> str: - async with aiohttp.ClientSession(headers=ZeroXZero.HEADERS) as session: + async def upload_from_bytes(self, data: bytes, filename: str) -> str: + async with aiohttp.ClientSession(headers=self.HEADERS) as session: form = aiohttp.FormData() form.add_field("file", data, filename=filename) async with session.post( - ZeroXZero.ENDPOINT_URL, + self.endpoint_url, data=form ) as response: text = await response.text() @@ -53,16 +52,14 @@ class ZeroXZero: return text.strip() raise ValueError(f"Upload failed: {text.strip()}") - @staticmethod - async def upload_text(text: str, filename: str = "text.txt") -> str: - return await ZeroXZero.upload_from_bytes(text.encode("utf-8"), filename) + async def upload_text(self, text: str, filename: str = "text.txt") -> str: + return await self.upload_from_bytes(text.encode("utf-8"), filename) - @staticmethod - async def is_available() -> bool: + async def is_available(self) -> bool: try: - async with aiohttp.ClientSession(headers=ZeroXZero.HEADERS) as session: + async with aiohttp.ClientSession(headers=self.HEADERS) as session: async with session.head( - ZeroXZero.ENDPOINT_URL, + self.endpoint_url, timeout=aiohttp.ClientTimeout(total=3) ) as response: return response.status == 200