This commit is contained in:
邹宗楠
2022-05-25 16:44:01 +08:00
parent 8e8d03c5fa
commit 8b1f8c79d6
5 changed files with 325 additions and 26 deletions

View File

@@ -13,6 +13,7 @@ import (
"time"
)
// 通讯录
func New(corpId, corpSecret string, config ...*platformapi.APIConfig) *API {
curConfig := platformapi.DefAPIConfig
if len(config) > 0 {
@@ -28,9 +29,26 @@ func New(corpId, corpSecret string, config ...*platformapi.APIConfig) *API {
}
}
// 会话
func NewMin(corpId, corpSecret string, config ...*platformapi.APIConfig) *API {
curConfig := platformapi.DefAPIConfig
if len(config) > 0 {
curConfig = *config[0]
}
return &API{
corpId: corpId,
corpSecret: corpSecret,
locker: sync.RWMutex{},
client: &http.Client{Timeout: curConfig.ClientTimeout},
config: &curConfig,
}
}
// 获取token
type EnterpriseToken struct {
PublicCode
ErrCode int `json:"errcode"` // 错误码
ErrMsg string `json:"errmsg"` // 错误消息
AccessToken string `json:"access_token"` // 权限说明
ExpiresIn int64 `json:"expires_in"` // 过期时间
}
@@ -72,19 +90,17 @@ func (a *API) GetAccessToken() (tokenInfo *EnterpriseToken, err error) {
// 数据发送
func (a *API) AccessAPI(baseUrl, actionApi, method string, bizParams map[string]interface{}) (retVal map[string]interface{}, err error) {
bizParams["access_token"] = a.accessToken
data, err := json.Marshal(bizParams) // 序列化
if err != nil {
return nil, err
}
// 全路径请求参数
fullURL := utils.GenerateGetURL(baseUrl, actionApi, nil)
// 发送请求
sendUrl := func() *http.Request {
var request *http.Request
if http.MethodPost == method {
// 全路径请求参数
fullURL := utils.GenerateGetURL(baseUrl, actionApi, map[string]interface{}{"access_token": a.accessToken})
request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(string(data)))
} else {
request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(baseUrl, actionApi, bizParams), nil)
@@ -114,8 +130,9 @@ func (a *API) AccessAPI(baseUrl, actionApi, method string, bizParams map[string]
return retVal, err
}
// 检查token是否应该更新
func (a *API) CheckAccessTokenExpiresIn() {
if a.expiresIn == 0 || a.expiresIn <= time.Now().Unix() {
if a.expiresIn == 0 || a.expiresIn <= time.Now().Unix() || a.accessToken == "" {
a.GetAccessToken()
}
return