package config

import (
	"github.com/sirupsen/logrus"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
	"os"
)

var client *cos.Client
var chatLogClient *cos.Client

func GetCOSClient() *cos.Client {
	if client == nil {
		InitCOSClient()
	}
	return client
}

func GetChatLogCOSClient() *cos.Client {
	if chatLogClient == nil {
		InitChatLogCOSClient()
	}
	return chatLogClient
}

func InitCOSClient() {
	if os.Getenv("COS_BUCKETURL") == "" {
		logrus.Warn("没有配置cos，跳过初始化...")
		return
	}

	u, _ := url.Parse(os.Getenv("COS_BUCKETURL"))
	// 用于 Get Service 查询，默认全地域 service.tx_cos.myqcloud.com
	//su, _ := url.Parse("https://cos.ap-nanjing.myqcloud.com")
	b := &cos.BaseURL{BucketURL: u}
	// 1.永久密钥
	client = cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			// 用户的 SecretId，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140
			SecretID: os.Getenv("COS_SECRETID"),
			// 用户的 SecretKey，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140
			SecretKey: os.Getenv("COS_SECRETKEY"),
		},
	})
}

func InitChatLogCOSClient() {
	if os.Getenv("COS_CHATLOG_BUCKETURL") == "" {
		logrus.Warn("没有配置cos，跳过初始化...")
		return
	}

	u, _ := url.Parse(os.Getenv("COS_CHATLOG_BUCKETURL"))
	// 用于 Get Service 查询，默认全地域 service.tx_cos.myqcloud.com
	//su, _ := url.Parse("https://cos.ap-nanjing.myqcloud.com")
	b := &cos.BaseURL{BucketURL: u}
	// 1.永久密钥
	chatLogClient = cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			// 用户的 SecretId，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140
			SecretID: os.Getenv("COS_SECRETID"),
			// 用户的 SecretKey，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140
			SecretKey: os.Getenv("COS_SECRETKEY"),
		},
	})
}
