package com.yonge.toolset.thirdparty.storage;

import com.ksyun.ks3.dto.PostObjectFormFields;
import com.yonge.toolset.thirdparty.entity.UploadSign;

import java.io.File;
import java.io.IOException;

public interface StoragePlugin {

    String getName();

    /**
     * 上传文件
     *
     * @param folderName 文件夹
     * @param file       需要上传的文件
     * @return 返回文件路径
     */
    String uploadFile(String folderName, File file);

    /**
     * 上传文件
     *
     * @param folderName   文件夹
     * @param file         需要上传的文件
     * @param delLocalFile 删除本地文件
     * @return 返回文件路径
     */
    String asyncUploadFile(String folderName, File file, boolean delLocalFile);

    /**
     * 下载文件
     *
     * @param folderName 文件夹
     * @param fileName   文件名称
     * @return 返回文件内容
     * @throws IOException
     */
    byte[] getFile(String folderName, String fileName) throws IOException;

    /**
     * 获取上传文件签名
     *
     * @param uploadSign
     * @return
     */
    PostObjectFormFields getUploadSign(UploadSign uploadSign);

    /**
     * @describe 设置文件访问为私有或公开
     * @apiNote 时光荏苒，认真工作的时间总是过得很快，而我、享受这一刻！
     * @author zx
     * @date 2022/7/13
     * @time 11:35
     * @param fileName:
     * @param isPublic:
     * @return void
     */
    void setFileAcl(String fileName,Boolean isPublic,String bucketName);
}
