refactor: some minor cleanup
This commit is contained in:
parent
307ca38ecc
commit
858d127246
12 changed files with 84 additions and 59 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
10
src/email_providers/utils.py
Normal file
10
src/email_providers/utils.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue