package twiliocli

import (
	twiliocall "github.com/tidbcloud/escalation-base/feishu_messager_v2/pkg/infra/clients/twiliocli/call"
	"github.com/tidbcloud/escalation-base/feishu_messager_v2/pkg/infra/config"
	"github.com/twilio/twilio-go"
)

type TwilioClient struct {
	Call twiliocall.Call
}

func NewTwilioClient(conf config.TwilioConfig) *TwilioClient {
	client := twilio.NewRestClientWithParams(twilio.ClientParams{
		Username: conf.AccountSid,
		Password: conf.AuthToken,
	})

	callers := make([]twiliocall.CallerNumber, 0, len(conf.CalloutNumbers))
	for _, caller := range conf.CalloutNumbers {
		callers = append(callers, twiliocall.CallerNumber{
			Prefix: caller.Prefix,
			Number: caller.Number,
		})
	}

	return &TwilioClient{Call: twiliocall.New(client, callers)}
}
