package enterprise_wechat

import (
	"encoding/xml"
)

// 回调参数（推送SuiteTicket）
type SuiteTicketInfo struct {
	SuiteId     string `xml:"SuiteId"`     // 第三方应用的SuiteId
	InfoType    string `xml:"InfoType"`    // suite_ticket
	TimeStamp   int64  `xml:"TimeStamp"`   // 时间戳
	SuiteTicket string `xml:"SuiteTicket"` // Ticket内容，最长为512字节
}

// 回调参数（解密推送消息Encrypt =》 SuiteTicketInfo 转化为上面的推送信息）
type SuiteEncrypt struct {
	ToUserName string `xml:"ToUserName"` // 企业微信的CorpID，当为第三方套件回调事件时，CorpID的内容为suiteid
	AgentID    string `xml:"AgentID"`    // 接收的应用id，可在应用的设置页面获取
	Encrypt    string `xml:"Encrypt"`    // 消息结构体加密后的字符串
}

// 解密加密推送信息
func (a *API) GetEnterpriseSend(request []byte) (*SuiteEncrypt, error) {
	encrypt := &SuiteEncrypt{}
	if err := xml.Unmarshal(request, encrypt); err != nil {
		return nil, err
	}

	return encrypt, nil
}

func (a *API) GetEnterpriseMsg(param []byte) (*SuiteTicketInfo, error) {
	suite := &SuiteTicketInfo{}
	if err := xml.Unmarshal(param, suite); err != nil {
		return nil, err
	}

	return suite, nil
}
