http, websocket api handler 추가
This commit is contained in:
@ -53,18 +53,23 @@ func (p *provider_redis) New(input *Authorization) (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
pk := storagekey_to_publickey(sk)
|
||||
|
||||
return string(storagekey_to_publickey(sk)), err
|
||||
logger.Println("session provider new :", sk, pk)
|
||||
|
||||
return string(pk), err
|
||||
}
|
||||
|
||||
func (p *provider_redis) Delete(account primitive.ObjectID) error {
|
||||
prefix := account.Hex()
|
||||
sks, err := p.redisClient.Keys(p.ctx, prefix+"*").Result()
|
||||
if err != nil {
|
||||
logger.Println("session provider delete :", sks, err)
|
||||
return err
|
||||
}
|
||||
|
||||
for _, sk := range sks {
|
||||
logger.Println("session provider delete :", sk)
|
||||
p.redisClient.Del(p.ctx, sk).Result()
|
||||
p.redisClient.Publish(p.ctx, p.deleteChannel, sk).Result()
|
||||
}
|
||||
@ -76,29 +81,38 @@ func (p *provider_redis) Query(pk string) (Authorization, error) {
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
payload, err := p.redisClient.Get(p.ctx, string(sk)).Result()
|
||||
if err == redis.Nil {
|
||||
logger.Println("session provider query :", pk, err)
|
||||
return Authorization{}, nil
|
||||
} else if err != nil {
|
||||
logger.Println("session provider query :", pk, err)
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
var auth Authorization
|
||||
if err := json.Unmarshal([]byte(payload), &auth); err != nil {
|
||||
logger.Println("session provider query :", pk, err)
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
logger.Println("session provider query :", pk, auth)
|
||||
|
||||
return auth, nil
|
||||
}
|
||||
|
||||
func (p *provider_redis) Touch(pk string) (bool, error) {
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
ok, err := p.redisClient.Expire(p.ctx, string(sk), p.ttl).Result()
|
||||
logger.Println("session provider touch :", pk)
|
||||
|
||||
if err == redis.Nil {
|
||||
// 이미 만료됨
|
||||
logger.Println("session consumer touch :", pk, err)
|
||||
return false, nil
|
||||
} else if err != nil {
|
||||
logger.Println("consumer Touch :", err)
|
||||
logger.Println("session consumer touch :", pk, err)
|
||||
return false, err
|
||||
}
|
||||
logger.Println("session consumer touch :", pk)
|
||||
|
||||
return ok, nil
|
||||
}
|
||||
@ -223,16 +237,20 @@ func (c *consumer_redis) Query(pk string) (Authorization, error) {
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
si, _, err := c.query_internal(sk)
|
||||
if err != nil {
|
||||
logger.Println("session consumer query :", pk, err)
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
if si == nil {
|
||||
logger.Println("session consumer query(si nil) :", pk, nil)
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
if time.Now().After(si.expireAt) {
|
||||
logger.Println("session consumer query(expired):", pk, nil)
|
||||
return Authorization{}, nil
|
||||
}
|
||||
logger.Println("session consumer query :", pk)
|
||||
|
||||
return *si.Authorization, nil
|
||||
}
|
||||
@ -244,9 +262,11 @@ func (c *consumer_redis) Touch(pk string) (Authorization, error) {
|
||||
sk := publickey_to_storagekey(publickey(pk))
|
||||
ok, err := c.redisClient.Expire(c.ctx, string(sk), c.ttl).Result()
|
||||
if err == redis.Nil {
|
||||
logger.Println("session consumer touch :", pk, err)
|
||||
|
||||
return Authorization{}, nil
|
||||
} else if err != nil {
|
||||
logger.Println("consumer Touch :", err)
|
||||
logger.Println("session consumer touch :", pk, err)
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
@ -254,10 +274,12 @@ func (c *consumer_redis) Touch(pk string) (Authorization, error) {
|
||||
// redis에 살아있다.
|
||||
si, added, err := c.query_internal(sk)
|
||||
if err != nil {
|
||||
logger.Println("session consumer touch(ok) :", pk, err)
|
||||
return Authorization{}, err
|
||||
}
|
||||
|
||||
if si == nil {
|
||||
logger.Println("session consumer touch(ok, si nil) :", pk)
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
@ -267,8 +289,10 @@ func (c *consumer_redis) Touch(pk string) (Authorization, error) {
|
||||
c.add_internal(sk, si)
|
||||
}
|
||||
|
||||
logger.Println("session consumer touch(ok) :", pk)
|
||||
return *si.Authorization, nil
|
||||
}
|
||||
|
||||
logger.Println("session consumer touch(!ok) :", pk)
|
||||
return Authorization{}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user