package utils

import (
	"fmt"
	"gitee.ltd/lxh/logger/log"
	"os"
	"time"
	"wireguard-dashboard/client"
	"wireguard-dashboard/config"
)

type fileSystem struct{}

func FileSystem() fileSystem {
	return fileSystem{}
}

// UploadFile
// @description: 上传文件
// @receiver fileSystem
// @param file
// @return filePath
// @return err
func (fileSystem) UploadFile(file []byte, suffix string) (filePath string, err error) {
	switch config.Config.File.Type {
	case "oss":
		ossObj, err := client.OSS.Put(config.Config.File.Path, file, suffix)
		if err != nil {
			return "", err
		}

		return ossObj.LongPath, nil
	case "local":
		filePath = fmt.Sprintf("%v/%d-avatar%s", config.Config.File.Path, time.Now().Unix(), suffix)
		// 创建目录
		if err = os.MkdirAll(filePath, os.FileMode(0777)); err != nil {
			log.Errorf("本地存储目录创建失败: %v", err)
			return "", err
		}
		if err = os.WriteFile(filePath, file, os.FileMode(0777)); err != nil {
			return "", err
		}

		return filePath, nil
	}
	return "", nil
}