package com.njcn.msgpush.module.push.client.factory;

import com.njcn.msgpush.module.push.client.sender.AppPushSender;
import com.njcn.msgpush.module.push.client.sender.EmailSender;
import com.njcn.msgpush.module.push.client.sender.Sender;
import com.njcn.msgpush.module.push.client.sender.SmsSender;
import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO;

/**
 * 各服务商自己的 sender 工厂。
 * 约束是：无论是否支持该渠道，都必须返回 sender 实例，不能返回 null。
 */
public interface MessageProviderFactory {
    /**
     * 创建短信发送器
     */
    SmsSender createSmsSender(ChannelProviderConfigDO config, Sender sender);

    /**
     * 创建邮件发送器
     */
    EmailSender createEmailSender(ChannelProviderConfigDO config, Sender sender);

    /**
     * 创建APP推送发送器
     */
    AppPushSender createAppPushSender(ChannelProviderConfigDO config, Sender sender);
}
