Source code for regstack.sms.null

from __future__ import annotations

import logging

from regstack.sms.base import SmsMessage, SmsService

log = logging.getLogger("regstack.sms.null")


[docs] class NullSmsService(SmsService): """Default backend. Records messages in ``self.outbox`` so tests and dev runs can inspect them without contacting a real SMS gateway. Logs each send at INFO. ``log_bodies`` (default False) controls whether the message body (containing the 6-digit code) is included in the log line. It defaults off so a misconfigured deployment can't leak codes into shared logs; flip it on for local dev when you want to read the code out of stdout. """ def __init__(self, *, log_bodies: bool = False) -> None: self.outbox: list[SmsMessage] = [] self._log_bodies = log_bodies
[docs] async def send(self, message: SmsMessage) -> None: self.outbox.append(message) if self._log_bodies: log.info( "[regstack/null-sms] To: %s | From: %s | Body: %s", message.to, message.from_number or "(unset)", message.body, ) else: log.info( "[regstack/null-sms] To: %s | From: %s | (body suppressed)", message.to, message.from_number or "(unset)", )