Enhance token caching with expiration check in MessageCenter

This commit is contained in:
renzhiyuan 2025-05-14 11:09:48 +08:00
parent ca173e57c6
commit b0fc0e3600
2 changed files with 14 additions and 5 deletions

View File

@ -7,6 +7,7 @@ import (
"gitea.cdlsxd.cn/self-tools/l_msg_api/cache" "gitea.cdlsxd.cn/self-tools/l_msg_api/cache"
"gitea.cdlsxd.cn/self-tools/l_msg_api/httpclient" "gitea.cdlsxd.cn/self-tools/l_msg_api/httpclient"
"strings" "strings"
"time"
) )
func (m *MessageCenter) parseOACreateParam(formModel *FormsData) (out []byte) { func (m *MessageCenter) parseOACreateParam(formModel *FormsData) (out []byte) {
@ -39,17 +40,19 @@ func (m *MessageCenter) parseSendBlackBoardParam(title, content string, receiver
} }
func (m *MessageCenter) getAccessToken() (string, error) { func (m *MessageCenter) getAccessToken() (string, error) {
if tokenInterface, exist := cache.InstanceCacheMap().Get(m.ClientKey); exist {
return tokenInterface.(string), nil
}
var data accessTokenResponse var data accessTokenResponse
if tokenInstance, exist := cache.InstanceCacheMap().Get(m.ClientKey); exist {
data = tokenInstance.(accessTokenResponse)
if int64(data.AccessExpire) >= time.Now().Unix() {
return tokenInstance.(string), nil
}
}
var authParam, _ = json.Marshal(map[string]string{"client_key": m.ClientKey, "client_secret": m.ClientSecret}) var authParam, _ = json.Marshal(map[string]string{"client_key": m.ClientKey, "client_secret": m.ClientSecret})
err := m.accessPost(accessToken, authParam, &data) err := m.accessPost(accessToken, authParam, &data)
if err != nil { if err != nil {
return "", err return "", err
} }
cache.InstanceCacheMap().Put(m.ClientKey, data.AccessToken) cache.InstanceCacheMap().Put(m.ClientKey, data)
return data.AccessToken, err return data.AccessToken, err
} }

View File

@ -25,6 +25,12 @@ func TestSms(t *testing.T) {
} }
func TestAccess(t *testing.T) {
msg, _ := l_msg_api.NewMessageCenter(serverHost, ClientKey, ClientSecret, "sms", "sms")
msg2, _ := l_msg_api.NewMessageCenter(serverHost, ClientKey, ClientSecret, "sms", "sms")
fmt.Println(msg, msg2)
}
func TestOaCreate(t *testing.T) { func TestOaCreate(t *testing.T) {
msg, err := l_msg_api.NewMessageCenter(local, ClientKey, ClientSecret, "sw_oa", "sw_oa_purchase") msg, err := l_msg_api.NewMessageCenter(local, ClientKey, ClientSecret, "sw_oa", "sw_oa_purchase")
if err != nil { if err != nil {