package testkits

import (
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	privatelink "github.com/alibabacloud-go/privatelink-20200415/v5/client"
	vpc "github.com/alibabacloud-go/vpc-20160428/v6/client"
	"k8s.io/utils/ptr"

	pkgalicloud "github.com/tidbcloud/observability/agent-control-server/pkg/cloud/alicloud"
)

type AliCloudClient struct {
	serverURL string
}

func NewAliCloudClient(serverURL string) *AliCloudClient {
	return &AliCloudClient{serverURL: serverURL}
}

func (m *AliCloudClient) PrivateLink(ar *pkgalicloud.AssumedRole, opts ...pkgalicloud.Option) (*privatelink.Client, error) {
	cfg := &openapi.Config{
		Endpoint:        ptr.To(m.serverURL),
		AccessKeyId:     ptr.To("fake-ak"),
		AccessKeySecret: ptr.To("fake-sk"),
		Protocol:        ptr.To("HTTP"),
	}
	return privatelink.NewClient(cfg)
}

func (m *AliCloudClient) VPC(ar *pkgalicloud.AssumedRole, opts ...pkgalicloud.Option) (*vpc.Client, error) {
	cfg := &openapi.Config{
		Endpoint:        ptr.To(m.serverURL),
		AccessKeyId:     ptr.To("fake-ak"),
		AccessKeySecret: ptr.To("fake-sk"),
		Protocol:        ptr.To("HTTP"),
	}
	return vpc.NewClient(cfg)
}
