package sms

import (
	"eta/eta_mini_ht_api/common/component/config"
	"github.com/beego/beego/v2/core/logs"
)

var (
	smsClient SMSClient
)

const (
	Juhe = "juhe"
	Emas = "emas"
)

type SMSClient interface {
	InitSender(config *config.SMSConfig)
	GetExpireMinute() int
	SendSms(mobile string, code string, smId int) (rs string, err error)
}

var clients = make(map[string]Instance)

type Instance func() SMSClient

func getClient(config *config.SMSConfig) (client SMSClient) {
	name := config.GetSmsType()
	instanceFunc, ok := clients[name]
	if !ok {
		logs.Error("不支持当前的短信平台", name)
		return nil
	}
	client = instanceFunc()
	client.InitSender(config)
	return client
}
func GetInstance() SMSClient {
	return smsClient
}
func InitSmsSender(config *config.SMSConfig) {
	smsClient = getClient(config)
}
func Register(name string, adapter Instance) {
	if adapter == nil {
		panic("不支持当前的短信平台")
	}
	if _, ok := clients[name]; ok {
		panic("当前短信平台类型已注册:" + name)
	}
	clients[name] = adapter
}