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

import com.backendsys.modules.upload.entity.SysFileResult;
import com.qcloud.cos.model.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * 文档中心 > 对象存储 > SDK文档 > Java SDK > 对象操作 > 上传对象
 * https://cloud.tencent.com/document/product/436/65935
 */
public interface TencentCosService {

    // [腾讯云COS] 上传对象
    SysFileResult putObject(MultipartFile multipartFile, String object_key, Integer is_watermark) throws IOException;
    // [腾讯云COS] 打水印
    void addWatermask(String object_key);

    // [腾讯云COS] 删除对象
    void deleteObject(String object_key);

    // [腾讯云COS] 批量删除对象
    void deleteObjects(List<String> object_keys);

    // [腾讯云COS] 查询对象是否存在
    boolean doesObjectExist(String object_key);
    // [腾讯云COS] 生成临时图片地址
    URL generateUrl(String object_key, Integer minutes);


    // [腾讯云COS] 初始化分块上传
    InitiateMultipartUploadResult initiateMultipartUpload(String filename);
    // [腾讯云COS] 上传分块
    UploadPartResult uploadPart(MultipartFile multipartFile, String upload_id, String object_key, Integer partNumber);
    // [腾讯云COS] 完成分块上传
    CompleteMultipartUploadResult completeMultipartUpload(String upload_id, String object_key, List<PartETag> partETags, Integer is_watermark);

    // [腾讯云COS] 查询已上传的分块
    PartListing listParts(String upload_id, String object_key);


    // [腾讯云COS] URL 转存
    SysFileResult urlToCOS(String url);
    SysFileResult urlToCOS(String url, String input_suffix);
    SysFileResult urlToCOS(String url, String input_suffix, Long user_id);
}
