package com.njcn.msgpush.module.push.client.sender.fallback;

import com.njcn.msgpush.module.push.client.sender.SendOutcome;
import com.njcn.msgpush.module.push.client.sender.SendResult;

/**
 * 用于承载“发送前即可确定”的固定结果。
 * 例如：当前服务商不支持该渠道，或当前渠道配置不完整。
 */
public abstract class AbstractFixedResultSender {

    private final SendOutcome outcome;

    private final String message;

    protected AbstractFixedResultSender(SendOutcome outcome, String message) {
        if (!SendOutcome.UNSUPPORTED_CHANNEL.equals(outcome) && !SendOutcome.CONFIG_INVALID.equals(outcome)) {
            throw new IllegalArgumentException("固定结果 sender 仅支持不支持渠道或配置无效场景");
        }
        this.outcome = outcome;
        this.message = message;
    }

    protected SendResult buildResult() {
        if (SendOutcome.UNSUPPORTED_CHANNEL.equals(outcome)) {
            return SendResult.unsupported(message);
        }
        return SendResult.configInvalid(message);
    }
}
