package helper

import (
	"context"
	"fmt"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	openapicred "github.com/aliyun/credentials-go/credentials"
)

func NewOSSCli(region string) (*oss.Client, error) {
	cred, err := openapicred.NewCredential(nil)
	if err != nil {
		return nil, fmt.Errorf("failed to create default AliCloud credentials: %w", err)
	}
	provider := credentials.CredentialsProviderFunc(func(ctx context.Context) (credentials.Credentials, error) {
		cred, err := cred.GetCredential()
		if err != nil {
			return credentials.Credentials{}, err
		}
		return credentials.Credentials{
			AccessKeyID:     *cred.AccessKeyId,
			AccessKeySecret: *cred.AccessKeySecret,
			SecurityToken:   *cred.SecurityToken,
		}, nil
	})
	cfg := oss.LoadDefaultConfig().WithRegion(region).WithCredentialsProvider(provider)

	c := oss.NewClient(cfg)
	return c, nil
}
