//go:generate ${GOBIN}/dummygen -d=client_dummy.go -package=authingcli ${GO_MODULE}/pkg/infra/clients/authingcli AuthingClient
package authingcli

import (
	"github.com/Authing/authing-golang-sdk/v3/management"

	"github.com/tidbcloud/devops/pkg/infra/config"
)

type AuthingClient interface {
	Management() *management.ManagementClient
}

type client struct {
	mgmt *management.ManagementClient
}

func NewAuthingClient(conf *config.RootConfig) (AuthingClient, error) {
	if conf.Clients.Authing.Dummy {
		return &DummyAuthingClient{}, nil
	}

	var err error
	cli := &client{}
	cli.mgmt, err = management.NewManagementClient(&management.ManagementClientOptions{
		AccessKeyId:     conf.Clients.Authing.ManagementAccessKey,
		AccessKeySecret: conf.Clients.Authing.ManagementSecretKey,
	})
	if err != nil {
		return nil, err
	}

	return cli, nil
}

func (c *client) Management() *management.ManagementClient {
	return c.mgmt
}
