1
0
Fork 0

refactor: some minor cleanup

This commit is contained in:
Arthur K. 2026-03-02 19:33:43 +03:00
parent 307ca38ecc
commit 858d127246
Signed by: wzray
GPG key ID: B97F30FDC4636357
12 changed files with 84 additions and 59 deletions

View file

@ -12,5 +12,5 @@ class BaseProvider(ABC):
pass
@abstractmethod
async def get_latest_message(self, email: str) -> str | None:
async def get_latest_message(self) -> str | None:
pass

View file

@ -9,6 +9,7 @@ import aiohttp
from playwright.async_api import BrowserContext
from .base import BaseProvider
from utils.randoms import generate_password
logger = logging.getLogger(__name__)
@ -51,11 +52,6 @@ def _generate_local_part() -> str:
return f"{first}{last}{digits}"
def _generate_password(length: int = 24) -> str:
alphabet = string.ascii_letters + string.digits
return "".join(secrets.choice(alphabet) for _ in range(length))
class MailTmProvider(BaseProvider):
def __init__(self, browser_session: BrowserContext):
super().__init__(browser_session)
@ -146,7 +142,7 @@ class MailTmProvider(BaseProvider):
for _ in range(8):
domain = secrets.choice(domains)
address = f"{_generate_local_part()}@{domain}"
password = _generate_password()
password = generate_password(length=24)
created = await self._create_account(address, password)
if not created:
@ -210,8 +206,7 @@ class MailTmProvider(BaseProvider):
text = "\n".join(str(part) for part in parts if part)
return text or None
async def get_latest_message(self, email: str) -> str | None:
del email
async def get_latest_message(self) -> str | None:
if not self._token:
raise RuntimeError("mail.tm provider is not initialized with mailbox token")

View file

@ -5,6 +5,7 @@ import re
from playwright.async_api import BrowserContext, Error as PlaywrightError, Page
from .base import BaseProvider
from .utils import ensure_page
logger = logging.getLogger(__name__)
@ -15,8 +16,7 @@ class TempMailOrgProvider(BaseProvider):
self.page: Page | None = None
async def _ensure_page(self) -> Page:
if self.page is None or self.page.is_closed():
self.page = await self.browser_session.new_page()
self.page = await ensure_page(self.browser_session, self.page)
return self.page
async def get_new_email(self) -> str:
@ -60,9 +60,9 @@ class TempMailOrgProvider(BaseProvider):
raise RuntimeError("Could not get temp email from temp-mail.org")
async def get_latest_message(self, email: str) -> str | None:
async def get_latest_message(self) -> str | None:
page = await self._ensure_page()
logger.info("[temp-mail.org] Waiting for latest message for %s", email)
logger.info("[temp-mail.org] Waiting for latest message")
if page.is_closed():
raise RuntimeError("temp-mail.org tab was closed unexpectedly")

View file

@ -4,6 +4,7 @@ import logging
from playwright.async_api import BrowserContext, Page
from .base import BaseProvider
from .utils import ensure_page
logger = logging.getLogger(__name__)
@ -14,8 +15,7 @@ class TenMinuteMailProvider(BaseProvider):
self.page: Page | None = None
async def _ensure_page(self) -> Page:
if self.page is None or self.page.is_closed():
self.page = await self.browser_session.new_page()
self.page = await ensure_page(self.browser_session, self.page)
return self.page
async def get_new_email(self) -> str:
@ -34,9 +34,9 @@ class TenMinuteMailProvider(BaseProvider):
logger.info("[10min] New email acquired: %s", email)
return email
async def get_latest_message(self, email: str) -> str | None:
async def get_latest_message(self) -> str | None:
page = await self._ensure_page()
logger.info("[10min] Waiting for latest message for %s", email)
logger.info("[10min] Waiting for latest message")
seen_count = 0
for attempt in range(60):

View file

@ -0,0 +1,10 @@
from playwright.async_api import BrowserContext, Page
async def ensure_page(
browser_session: BrowserContext,
page: Page | None,
) -> Page:
if page is None or page.is_closed():
return await browser_session.new_page()
return page