| package model |
|
|
| import ( |
| "fmt" |
| "time" |
|
|
| "github.com/QuantumNous/new-api/common" |
| "github.com/QuantumNous/new-api/constant" |
| ) |
|
|
| func cacheSetToken(token Token) error { |
| key := common.GenerateHMAC(token.Key) |
| token.Clean() |
| err := common.RedisHSetObj(fmt.Sprintf("token:%s", key), &token, time.Duration(common.RedisKeyCacheSeconds())*time.Second) |
| if err != nil { |
| return err |
| } |
| return nil |
| } |
|
|
| func cacheDeleteToken(key string) error { |
| key = common.GenerateHMAC(key) |
| err := common.RedisDelKey(fmt.Sprintf("token:%s", key)) |
| if err != nil { |
| return err |
| } |
| return nil |
| } |
|
|
| func cacheIncrTokenQuota(key string, increment int64) error { |
| key = common.GenerateHMAC(key) |
| err := common.RedisHIncrBy(fmt.Sprintf("token:%s", key), constant.TokenFiledRemainQuota, increment) |
| if err != nil { |
| return err |
| } |
| return nil |
| } |
|
|
| func cacheDecrTokenQuota(key string, decrement int64) error { |
| return cacheIncrTokenQuota(key, -decrement) |
| } |
|
|
| func cacheSetTokenField(key string, field string, value string) error { |
| key = common.GenerateHMAC(key) |
| err := common.RedisHSetField(fmt.Sprintf("token:%s", key), field, value) |
| if err != nil { |
| return err |
| } |
| return nil |
| } |
|
|
| |
| func cacheGetTokenByKey(key string) (*Token, error) { |
| hmacKey := common.GenerateHMAC(key) |
| if !common.RedisEnabled { |
| return nil, fmt.Errorf("redis is not enabled") |
| } |
| var token Token |
| err := common.RedisHGetObj(fmt.Sprintf("token:%s", hmacKey), &token) |
| if err != nil { |
| return nil, err |
| } |
| token.Key = key |
| return &token, nil |
| } |
|
|