package com.backendsys.modules.sdk.tencentcloud.cos.utils;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.transfer.TransferManager;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TencentCosUtil {

    // [腾讯云COS][高级接口] 创建 TransferManager 实例
    public static TransferManager createTransferManager(COSClient cosClient) {
        // 自定义线程池大小，建议在客户端与 COS 网络充足（例如使用腾讯云的 CVM，同地域上传 COS）的情况下，设置成16或32即可，可较充分的利用网络资源
        // 对于使用公网传输且网络带宽质量不高的情况，建议减小该值，避免因网速过慢，造成请求超时。
        ExecutorService threadPool = Executors.newFixedThreadPool(32);
        // 传入一个 threadpool, 若不传入线程池，默认 TransferManager 中会生成一个单线程的线程池。
        return new TransferManager(cosClient, threadPool);
    }

    // [工具类] 转换为 File
    public static File toFile(MultipartFile multipartFile) {
        File file = null;
        try {
            file = FileUtil.createTempFile();
            FileUtil.writeFromStream(multipartFile.getInputStream(), file);
            file.deleteOnExit();
        } catch (IORuntimeException e) {
            e.printStackTrace();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return file;
    }

}
