package com.platform.plugs.live.handlers;

import com.aliyun.vod.upload.impl.VoDProgressListener;
import com.aliyun.vod.upload.resp.UploadImageResponse;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import com.aliyun.vod.upload.resp.UploadVideoResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.vod.model.v20170321.*;
import com.platform.plugs.live.config.LiveUploadToVoDConfig;
import com.platform.plugs.live.rpcEntity.LiveUploadVideo;

import java.io.InputStream;

public interface ILiveUploadToVoDHandler {

	void configLiveUploadToVoD(LiveUploadToVoDConfig liveUploadToVoDConfig);


	/**
     * 流式上传接口
     *
     * @param title 视频标题
     * @param fileName 文件名称为源文件名
     * @param inputStream 文件流
     * @param isShowWaterMark 是否显示水印(可选)，指定模板组ID时，根据模板组配置确定是否显示水印
	 * @param cateId 视频分类ID
	 * @param tags 视频标签
	 * @param description 视频描述
	 * @param coverURL 封面图片
	 * @param templateGroupId 模板组ID
	 * @param printProgress 开启默认上传进度回调
	 * @param voDProgressListener 设置自定义上传进度回调 (必须继承 VoDProgressListener)
     */
	UploadStreamResponse uploadStream(String title,String fileName, InputStream inputStream, boolean isShowWaterMark, Long cateId, String tags,
			String description, String coverURL, String templateGroupId, boolean printProgress,	VoDProgressListener voDProgressListener);

	/**
	 * 本地音视频文件上传
	 * @param title       视频标题
	 * @param fileName    文件名称为源文件名
	 * @param uploadVideo 请求参数
	 * @return
	 */
	UploadVideoResponse uploadLocalVideo(String title, String fileName, LiveUploadVideo uploadVideo);

	/**
     * 流式上传图片接口
     *
     * @param title 视频标题
     * @param fileName 文件名称为源文件名
     * @param inputStream 文件流
     * @param imageType 图片类型（必选）取值范围：default（默认)，cover（封面），watermark（水印）
	 * @param imageExt 图片文件扩展名（可选）取值范围：png，jpg，jpeg
	 * @param tags 视频标签
	 * @param printProgress 开启默认上传进度回调
	 * @param voDProgressListener 设置自定义上传进度回调 (必须继承 VoDProgressListener)
     */
	UploadImageResponse uploadImageStream(String title,String fileName,InputStream inputStream,String imageType,String imageExt,String tags,
    		boolean printProgress,VoDProgressListener voDProgressListener);

	/**
	 * 修改视频信息
	 * @param videoId 视频ID
	 * @param title 视频标题
	 * @param description 视频描述
	 * @param cateId 视频分类ID
	 * @param tags 视频标签
	 */
	UpdateVideoInfoResponse updateVideoInfo(String videoId,String title,String description,Long cateId,String tags)  throws ServerException, ClientException;

	/**
	 * 批量更新图片信息
	 * @param imageId 图片ID
	 * @param title 图片标题。长度不超过128个字节。UTF8编码。
	 * @param description 图片描述。长度不超过1024个字节 UTF8编码
	 * @param cateId 分类ID
	 * @param tags 图片标签
	 * @throws ClientException   客户端异常
	 * @throws ServerException   服务端异常
	 * @return
	 */
	UpdateImageInfosResponse updateContent(String imageId,String title,String description,Long cateId,String tags) throws ServerException, ClientException;

	/**
     * 获取音视频信息
     *
     * @param videoId 音视频ID
     */
	GetMezzanineInfoResponse  getMezzanineInfo(String videoId) throws Exception;

	/**
     * 获取音视频信息
     *
     * @param videoId 音视频ID
     */
	GetVideoInfoResponse getVideoInfo(String videoId) throws Exception;
	/**
     * 获取图片信息
     *
     * @param imageId 图片ID
     */
	GetImageInfoResponse getImageInfo(String imageId) throws Exception;

	GetPlayInfoResponse getM3u8PlayInfo(String videoId) throws ClientException;
}
