| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- """Mailbox abstractions for zhuce6."""
- from __future__ import annotations
- from abc import ABC, abstractmethod
- from dataclasses import dataclass, field
- from typing import Any
- @dataclass
- class MailboxAccount:
- email: str
- account_id: str = ""
- extra: dict[str, Any] = field(default_factory=dict)
- class BaseMailbox(ABC):
- @abstractmethod
- def get_email(self) -> MailboxAccount:
- """Create or reserve an email inbox."""
- @abstractmethod
- def wait_for_code(
- self,
- account: MailboxAccount,
- keyword: str = "",
- timeout: int = 120,
- before_ids: set[str] | None = None,
- ) -> str:
- """Poll for a 6-digit verification code."""
- @abstractmethod
- def get_current_ids(self, account: MailboxAccount) -> set[str]:
- """Return the currently visible message ids."""
- def create_mailbox(
- provider: str,
- proxy: str | None = None,
- *,
- profile_name: str = "auto",
- ) -> BaseMailbox:
- provider_key = str(provider or "").strip().lower()
- if provider_key != "cfmail":
- raise ValueError(f"Unsupported mailbox provider: {provider}")
- from .cfmail import CfMailMailbox
- return CfMailMailbox(proxy=proxy, profile_name=profile_name)
|