package accesstoken import ( "context" "gitlink.org.cn/cloudream/common/consts/errorcode" stgglb "gitlink.org.cn/cloudream/jcs-pub/common/globals" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/accesstoken" corrpc "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/rpc/coordinator" jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types" ) type ExitEvent = accesstoken.ExitEvent type CacheKey = accesstoken.CacheKey type Cache struct { localHubID jcstypes.HubID *accesstoken.Cache } func New(localHubID jcstypes.HubID) *Cache { c := &Cache{ localHubID: localHubID, } c.Cache = accesstoken.New(c.load) return c } func (c *Cache) load(key accesstoken.CacheKey) (jcstypes.UserAccessToken, error) { corCli := stgglb.CoordinatorRPCPool.Get() defer corCli.Release() tokenResp, cerr := corCli.HubLoadAccessToken(context.Background(), &corrpc.HubLoadAccessToken{ UserID: key.UserID, TokenID: key.TokenID, HubID: c.localHubID, }) if cerr != nil { if cerr.Code == errorcode.DataNotFound { return jcstypes.UserAccessToken{}, accesstoken.ErrTokenNotFound } return jcstypes.UserAccessToken{}, cerr.ToError() } return tokenResp.Token, nil }