package kms

import (
	"fmt"
	"os"
	"strconv"
	"time"

	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	kms20160120 "github.com/alibabacloud-go/kms-20160120/v3/client"
	"github.com/alibabacloud-go/tea/tea"
	"github.com/aliyun/credentials-go/credentials"
)

func CreateClient(region string) (_result *kms20160120.Client, _err error) {
	credentialsConfig := new(credentials.Config).
		SetType("oidc_role_arn").
		SetOIDCProviderArn(os.Getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN")).
		SetOIDCTokenFilePath(os.Getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE")).
		SetRoleArn(os.Getenv("ALIBABA_CLOUD_ROLE_ARN")).
		SetRoleSessionName("credentials-go-" + strconv.FormatInt(time.Now().UnixNano()/1000, 10)).
		SetSTSEndpoint(fmt.Sprintf("sts.%s.aliyuncs.com", region))

	credential, _err := credentials.NewCredential(credentialsConfig)
	if _err != nil {
		fmt.Println("create credential error: ", _err)
		return _result, _err
	}
	config := &openapi.Config{
		Credential: credential,
	}
	config.Endpoint = tea.String(fmt.Sprintf("kms.%s.aliyuncs.com", region))
	_result, _err = kms20160120.NewClient(config)
	return _result, _err
}
