package core

type SendTextMsgRequest struct {
	ToWxid  string   `json:"to_wxid"`
	Content string   `json:"content"`
	AtList  []string `json:"at_list"` // 群消息时候使用 "notify@all" @所有人
}

// SendTextMsg 发送文本消息
func (w *WxApi) SendTextMsg(request SendTextMsgRequest) (err error) {
	if len(request.AtList) > 0 {
		_, err = w.internalCall(0, -1, MtSendChatroomAtmsg, request, nil)
		if err != nil {
			return err
		}
	} else {
		_, err = w.internalCall(0, -1, MtSendTextmsg, request, nil)
		if err != nil {
			return err
		}
	}
	return nil
}

type SendCardMsgRequest struct {
	ToWxid   string `json:"to_wxid"`
	CardWxid string `json:"card_wxid"`
}

// SendCardMsg 发送名片消息
func (w *WxApi) SendCardMsg(request SendCardMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendCardmsg, request, nil)
	return err
}

type SendLinkMsgRequest struct {
	ToWxid   string `json:"to_wxid"`
	Title    string `json:"title"`
	Desc     string `json:"desc"`
	Url      string `json:"url"`
	ImageUrl string `json:"image_url"`
}

// SendLinkMsg 发送链接消息
func (w *WxApi) SendLinkMsg(request SendLinkMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendLinkmsg, request, nil)
	return err
}

type SendImageMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	File   string `json:"file"` // 例如 "C:\\a.jpg"
}

// SendImageMsg 发送图片消息
func (w *WxApi) SendImageMsg(request SendImageMsgRequest) (err error) {
	_, err = w.internalCall(0, 60, MtSendImgmsg, request, nil)
	return err
}

type SendFileMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	File   string `json:"file"`
}

// SendFileMsg 发送文件消息
func (w *WxApi) SendFileMsg(request SendFileMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendFilemsg, request, nil)
	return err
}

type SendVideoMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	File   string `json:"file"`
}

// SendVideoMsg 发送视频消息
func (w *WxApi) SendVideoMsg(request SendVideoMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendVideomsg, request, nil)
	return err
}

type SendGifMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	File   string `json:"file"`
}

// SendGifMsg 发送GIF消息
func (w *WxApi) SendGifMsg(request SendGifMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendGifmsg, request, nil)
	return err
}

type SendXmlMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	Xml    string `json:"xml"`
}

// SendXmlMsg 发送XML原始消息
func (w *WxApi) SendXmlMsg(request SendXmlMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtSendXmlMsg, request, nil)
	return err
}

type ForwardMsgRequest struct {
	ToWxid string `json:"to_wxid"`
	Msgid  string `json:"msgid"`
}

// ForwardMsg 转发任意类型消息
func (w *WxApi) ForwardMsg(request ForwardMsgRequest) (err error) {
	_, err = w.internalCall(0, -1, MtForwardMsg, request, nil)
	return err
}
