package api

import (
	"github.com/gin-gonic/gin"
	"github.com/goWxHook/goWxHook/core"
	"github.com/goWxHook/goWxHook/utils"
)

// cdnInitial
//
//	@Summary		CDN初始化
//	@Description	CDN初始化接口
//	@Tags			CDN
//	@Accept			json
//	@Produce		json
//	@Response		200	{object}	CommonStringResponse{Data=core.CDNInitialResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/initial [post]
func (w *WebApi) cdnInitial(c *gin.Context) {
	ret, err := w.WxApi.InitialCDN()
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnUpload
//
//	@Summary		CDN上传
//	@Description	CDN上传接口
//	@Tags			CDN
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNUploadRequest									true	"上传数据"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNUploadResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/upload [post]
func (w *WebApi) cdnUpload(c *gin.Context) {
	var form core.CDNUploadRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNUpload(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnDownload
//
//	@Summary		CDN下载
//	@Description	CDN下载接口
//	@Tags			CDN
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNDownloadRequest									true	"下载数据"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNDownloadResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/download [post]
func (w *WebApi) cdnDownload(c *gin.Context) {
	var form core.CDNDownloadRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNDownload(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnWorkWxDownload
//
//	@Summary		企业微信CDN下载
//	@Description	企业微信CDN下载接口
//	@Tags			CDN
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.WorkWxCdnDownloadRequest									true	"下载数据"
//	@Response		200		{object}	CommonStringResponse{Data=core.WorkWxCdnDownloadResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/workwx/download [post]
func (w *WebApi) cdnWorkWxDownload(c *gin.Context) {
	var form core.WorkWxCdnDownloadRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.WorkWxCdnDownload(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendTextMsg
//
//	@Summary		发送文本消息
//	@Description	发送文本消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendTextMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendTextMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/text [post]
func (w *WebApi) cdnSendTextMsg(c *gin.Context) {
	var form core.CDNSendTextMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendTextMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendImageMsg
//
//	@Summary		发送图片消息
//	@Description	发送图片消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendImageMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendImageMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/image [post]
func (w *WebApi) cdnSendImageMsg(c *gin.Context) {
	var form core.CDNSendImageMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendImageMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendVideoMsg
//
//	@Summary		发送视频消息
//	@Description	发送视频消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendVideoMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendVideoMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/video [post]
func (w *WebApi) cdnSendVideoMsg(c *gin.Context) {
	var form core.CDNSendVideoMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendVideoMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendFileMsg
//
//	@Summary		发送文件消息
//	@Description	发送文件消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendFileMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendFileMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/file [post]
func (w *WebApi) cdnSendFileMsg(c *gin.Context) {
	var form core.CDNSendFileMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendFileMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendCardLinkMsg
//
//	@Summary		发送卡片链接消息
//	@Description	发送卡片链接消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendCardLinkMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendCardLinkMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/card_link [post]
func (w *WebApi) cdnSendCardLinkMsg(c *gin.Context) {
	var form core.CDNSendCardLinkMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendCardLinkMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendGifMsg
//
//	@Summary		发送GIF消息
//	@Description	发送GIF消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendGifMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendGifMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/gif [post]
func (w *WebApi) cdnSendGifMsg(c *gin.Context) {
	var form core.CDNSendGifMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendGifMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendMiniProgramMsg
//
//	@Summary		发送小程序消息
//	@Description	发送小程序消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendMiniProgramMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendMiniProgramMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/mini_program [post]
func (w *WebApi) cdnSendMiniProgramMsg(c *gin.Context) {
	var form core.CDNSendMiniProgramMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendMiniProgramMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendVideoMomentMsg
//
//	@Summary		发送视频号消息
//	@Description	发送视频号消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendVideoMomentMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendVideoMomentMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/video_number [post]
func (w *WebApi) cdnSendVideoMomentMsg(c *gin.Context) {
	var form core.CDNSendVideoMomentMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendVideoMomentMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendCardMsg
//
//	@Summary		发送名片消息
//	@Description	发送名片消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendCardMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendCardMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/card [post]
func (w *WebApi) cdnSendCardMsg(c *gin.Context) {
	var form core.CDNSendCardMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendCardMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendLocationMsg
//
//	@Summary		发送位置消息
//	@Description	发送位置消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendLocationMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendLocationMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/location [post]
func (w *WebApi) cdnSendLocationMsg(c *gin.Context) {
	var form core.CDNSendLocationMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendLocationMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendRevokeMsg
//
//	@Summary		发送撤回消息
//	@Description	发送撤回消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendRevokeMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendRevokeMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/revoke [post]
func (w *WebApi) cdnSendRevokeMsg(c *gin.Context) {
	var form core.CDNSendRevokeMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendRevokeMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendXmkMsg
//
//	@Summary		发送xml消息
//	@Description	发送xml消息接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendXmlMsgRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendXmlMsgResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/xml [post]
func (w *WebApi) cdnSendXmkMsg(c *gin.Context) {
	var form core.CDNSendXmlMsgRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendXmlMsg(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// cdnSendGifMsgNew
//
//	@Summary		发送GIF消息（新）
//	@Description	发送GIF消息（新）接口
//	@Tags			CDN发送消息
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CDNSendGifMsgNewRequest									true	"消息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CDNSendGifMsgNewResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/cdn/send/gif_new [post]
func (w *WebApi) cdnSendGifMsgNew(c *gin.Context) {
	var form core.CDNSendGifMsgNewRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.CDNSendGifMsgNew(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}
