package com.chushang.oss.service;

import com.chushang.common.core.util.IdUtils;

import java.io.InputStream;
import java.util.List;

public interface OssService {

    default String getSuffixPath(String suffix){
        String nanoID = IdUtils.getId(32);
        return getSuffixPath(suffix, nanoID);

    }
    /**
     * 文件路径
     * @param filename 文件名称
     * @param suffix 文件类型
     * @return 返回上传路径
     */
    default String getSuffixPath(String suffix, String filename) {
        return filename + suffix;
    }

    default String getPrefixPath(String prefix, String filename){
        return prefix + "/" + filename;
    }

    default String getSuffixPath(String prefix, String suffix, String filename)
    {
        //文件路径
        return prefix + "/" + filename + suffix;
    }
    /**
     * 文件上传
     * @param data    文件字节数组
     * @param path    文件路径，包含文件名
     * @return        返回http地址
     */
    String upload(byte[] data, String path);

    /**
     * 文件上传
     * @param data     文件字节数组
     * @param suffix   文件类型
     * @return         返回http地址
     */
    String uploadSuffix(byte[] data, String suffix);

    String uploadSuffix(byte[] data, String suffix, String filename);
    String uploadPrefix(byte[] data,String prefix, String suffix, String filename);
    String uploadPrefix(byte[] data,String prefix, String filename);

    /**
     * 文件上传
     * @param inputStream   字节流
     * @param path          文件路径，包含文件名
     * @return              返回http地址
     */
    String upload(InputStream inputStream, String path);

    /**
     * 文件上传
     * @param inputStream  字节流
     * @param suffix       文件类型
     * @return             返回http地址
     */
    String uploadSuffix(InputStream inputStream, String suffix);

    /**
     * 删除 cloud 中的文件
     * @param path 文件路径
     */
    void delFile(String path);

    /**
     * 批量删除
     */
    List<String> delFileBatch(List<String> keys);

}
