package api

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

// getMoment
//
//	@Summary		获取朋友圈
//	@Description	获取朋友圈接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.GetMomentRequest									true	"朋友圈信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.GetMomentResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/list [post]
func (w *WebApi) getMoment(c *gin.Context) {
	var form core.GetMomentRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.GetMoment(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// commentMoment
//
//	@Summary		评论朋友圈
//	@Description	评论朋友圈接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.CommentMomentRequest									true	"评论信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.CommentMomentResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/comment [post]
func (w *WebApi) commentMoment(c *gin.Context) {
	var form core.CommentMomentRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.CommentMoment(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// likeMoment
//
//	@Summary		点赞朋友圈
//	@Description	点赞朋友圈接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.LikeMomentRequest									true	"点赞信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.LikeMomentResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/like [post]
func (w *WebApi) likeMoment(c *gin.Context) {
	var form core.LikeMomentRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.LikeMoment(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// sendMoment
//
//	@Summary		发送朋友圈
//	@Description	发送朋友圈接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.SendMomentRequest									true	"发送信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.SendMomentResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/send [post]
func (w *WebApi) sendMoment(c *gin.Context) {
	var form core.SendMomentRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.SendMoment(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// uploadMomentImage
//
//	@Summary		上传朋友圈图片
//	@Description	上传朋友圈图片接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.UploadMomentImageRequest									true	"上传图片信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.UploadMomentImageResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/upload/image [post]
func (w *WebApi) uploadMomentImage(c *gin.Context) {
	var form core.UploadMomentImageRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.UploadMomentImage(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// getFriendMoment
//
//	@Summary		获取好友朋友圈
//	@Description	获取好友朋友圈接口
//	@Tags			朋友圈
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.GetFriendMomentRequest									true	"好友朋友圈信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.GetFriendMomentResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/moment/friend/list [post]
func (w *WebApi) getFriendMoment(c *gin.Context) {
	var form core.GetFriendMomentRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.GetFriendMoment(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}
