| | package model |
| |
|
| | import ( |
| | "fmt" |
| | "one-api/common" |
| | "one-api/constant" |
| | "time" |
| | ) |
| |
|
| | func cacheSetToken(token Token) error { |
| | key := common.GenerateHMAC(token.Key) |
| | token.Clean() |
| | err := common.RedisHSetObj(fmt.Sprintf("token:%s", key), &token, time.Duration(constant.TokenCacheSeconds)*time.Second) |
| | if err != nil { |
| | return err |
| | } |
| | return nil |
| | } |
| |
|
| | func cacheDeleteToken(key string) error { |
| | key = common.GenerateHMAC(key) |
| | err := common.RedisHDelObj(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 |
| | } |
| |
|