|
- package wechat
-
- import (
- "code.gitea.io/gitea/modules/redis/redis_client"
- "code.gitea.io/gitea/modules/redis/redis_key"
- "time"
- )
-
- const EMPTY_REDIS_VAL = "Nil"
-
- func GetWechatAccessToken() string {
- token, _ := redis_client.Get(redis_key.WechatAccessTokenKey())
- if token != "" {
- if token == EMPTY_REDIS_VAL {
- return ""
- }
- live, _ := redis_client.TTL(redis_key.WechatAccessTokenKey())
- //refresh wechat access token when expire time less than 5 minutes
- if live > 0 && live < 300 {
- refreshAccessTokenCache()
- }
- return token
- }
- return refreshAccessTokenCache()
- }
-
- func refreshAccessTokenCache() string {
- r := callAccessToken()
-
- var token string
- if r != nil {
- token = r.Access_token
- }
-
- if token == "" {
- redis_client.Setex(redis_key.WechatAccessTokenKey(), EMPTY_REDIS_VAL, 10*time.Second)
- return ""
- }
-
- redis_client.Setex(redis_key.WechatAccessTokenKey(), token, time.Duration(r.Expires_in)*time.Second)
-
- return token
-
- }
|