package file_store

import (
	"cold-delivery/conf"
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

type OXS struct {
	// Endpoint 访问域名
	Endpoint string
	// AccessKeyID AK
	AccessKeyID string
	// AccessKeySecret AKS
	AccessKeySecret string
	// BucketName 桶名称
	BucketName string
}

// Setup 配置文件存储driver
func (e *OXS) Setup(driver DriverType, options ...ClientOption) FileStoreType {
	fileStoreType := driver
	var fileStore FileStoreType
	switch fileStoreType {
	case AliYunOSS:
		fileStore = new(ALiYunOSS)
		err := fileStore.Setup(e.Endpoint, e.AccessKeyID, e.AccessKeySecret, e.BucketName)
		if err != nil {
			fmt.Println(err)
		}
		return fileStore
	case HuaweiOBS:
		fileStore = new(HuaWeiOBS)
		err := fileStore.Setup(e.Endpoint, e.AccessKeyID, e.AccessKeySecret, e.BucketName)
		if err != nil {
			fmt.Println(err)
		}
		return fileStore
	case QiNiuKodo:
		fileStore = new(QiNiuKODO)
		err := fileStore.Setup(e.Endpoint, e.AccessKeyID, e.AccessKeySecret, e.BucketName)
		if err != nil {
			fmt.Println(err)
		}
		return fileStore
	}

	return nil
}

var QiniuFileStore FileStoreType

func QiniuSetup() {
	e := OXS{
		conf.ExtConfig.Qiniu.Endpoint,
		conf.ExtConfig.Qiniu.AccessKeyID,
		conf.ExtConfig.Qiniu.AccessKeySecret,
		conf.ExtConfig.Qiniu.BucketName}
	QiniuFileStore = e.Setup(QiNiuKodo, map[string]interface{}{"Zone": "华东"})
}

// golang获取程序运行路径
func GetCurrentDirectory() string {
	dir, _ := filepath.Abs(filepath.Dir(os.Args[0]))

	return strings.Replace(dir, "\\", "/", -1)
}
