package org.dromara.mp.service;

import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialCountResult;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialFileBatchGetResult;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialUploadResult;

import java.io.File;
import java.io.InputStream;

/**
 * 微信公众号素材管理服务接口
 *
 * @author pengles
 */
public interface WxMpMaterialService {

    /**
     * 上传临时素材
     *
     * @param mediaType 媒体类型
     * @param file      文件
     * @return 上传结果
     */
    WxMediaUploadResult uploadTempMedia(String mediaType, File file);

    /**
     * 下载临时素材
     *
     * @param mediaId 媒体ID
     * @return 文件输入流
     */
    InputStream downloadTempMedia(String mediaId);

    /**
     * 上传永久素材
     *
     * @param mediaType 媒体类型
     * @param file      文件
     * @return 上传结果
     */
    WxMpMaterialUploadResult uploadMaterial(String mediaType, File file);

    /**
     * 删除永久素材
     *
     * @param mediaId 媒体ID
     * @return 是否删除成功
     */
    boolean deleteMaterial(String mediaId);

    /**
     * 获取永久素材
     *
     * @param mediaId 媒体ID
     * @return 素材信息
     */
    WxMpMaterialFileBatchGetResult.WxMaterialFileBatchGetNewsItem getMaterial(String mediaId);

    /**
     * 获取素材列表
     *
     * @param type   素材类型
     * @param offset 偏移量
     * @param count  数量
     * @return 素材列表
     */
    WxMpMaterialFileBatchGetResult getMaterialList(String type, int offset, int count);

    /**
     * 获取素材总数
     *
     * @return 素材总数
     */
    WxMpMaterialCountResult getMaterialCount();

    /**
     * 上传图文消息内的图片
     *
     * @param file 图片文件
     * @return 图片URL
     */
    String uploadImg(File file);
}