from dataclasses import dataclass from anydi import singleton from ows_text_campaigns.campaigns.enums import MessageChannel from ows_text_campaigns.campaigns.services import CampaignService from ows_text_campaigns.campaigns.types import MessagePreview @dataclass(kw_only=True) class GetCampaignMessagePreviewRequest: campaign_id: str channel: MessageChannel include_unsubscribe_text: bool = True @singleton class GetCampaignMessagePreviewHandler: def __init__(self, campaign_service: CampaignService) -> None: self.campaign_service = campaign_service def handle(self, request: GetCampaignMessagePreviewRequest) -> MessagePreview: campaign = self.campaign_service.get_campaign(request.campaign_id) return self.campaign_service.get_message_preview( campaign, channel=request.channel, include_unsubscribe_text=request.include_unsubscribe_text, )