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 }