package com.ytpm.middle.oss;


import io.minio.errors.ErrorResponseException;
import io.minio.errors.InsufficientDataException;
import io.minio.errors.InternalException;
import io.minio.errors.InvalidBucketNameException;
import io.minio.errors.InvalidResponseException;
import io.minio.errors.XmlParserException;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public interface StorageTemplate {
    /**
     * 初始化oss属性
     *
     * @param ossProperties oss属性
     */
    void init(OssProperties ossProperties);

    /**
     * 上传文件(本地文件上传)
     *
     * @param file 本地文件
     * @return
     */
    String upload(File file);

    /**
     * 删除文件
     *
     * @param filename
     */
    boolean deleteFile(String filename);

    /**
     * 转存文件（把原来的文件再重新上传存储一遍）
     *
     * @param filename 文件名
     * @return
     */
    OssAttach restore(String filename);

    /**
     * 获取文件url
     *
     * @param filename
     * @return
     */
    String getUrl(String filename);

    InputStream getStream(String filename) throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, InternalException, XmlParserException, InvalidBucketNameException, ErrorResponseException, InvalidBucketNameException;
}
