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);
}
