package providers

import (
	"cmdb-backend/models"
	config2 "cmdb-backend/pkg/config"
	"cmdb-backend/pkg/logging"
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/s3"
)

func awsS3Client() (client *s3.Client) {
	creds := credentials.NewStaticCredentialsProvider(
		config2.GC.Vendor.AwsAk,
		config2.GC.Vendor.AwsSk,
		config2.GC.Vendor.AwsSession,
	)
	cfg, err := config.LoadDefaultConfig(
		context.TODO(),
		config.WithRegion("us-west-2"),
		config.WithCredentialsProvider(creds))
	if err != nil {
		logging.Error("Failed to load configuration", err)
	}
	client = s3.NewFromConfig(cfg)
	return client
}

func AwsGetBucketList() {
	client := awsS3Client()
	listBucketsResult, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
	if err != nil {
		fmt.Println("Couldn't list buckets", err)
	}
	for _, bucket := range listBucketsResult.Buckets {
		oss := models.OSS{
			Name:          *bucket.Name,
			CreateTime:    *bucket.CreationDate,
			PublicAddress: fmt.Sprintf(*bucket.Name + ".s3.amazonaws.com"),
			VendorId:      3,
			Location:      "",
			RwPermit:      "",
		}
		fmt.Println("Bucket Info", oss)
		//err := models.CreateS3Bucket(&oss)
		//if err != nil {
		//	logging.Error("Create oss bucket failed!", err)
		//}
	}
	return
}

func AwsGetCDNList() {

}
