From 2972daf46d4096f1fb7a41d30814b7186b31ac65 Mon Sep 17 00:00:00 2001 From: "Diogo Franco (Kovensky)" Date: Thu, 25 Jul 2013 22:54:40 -0300 Subject: [PATCH] anidb: Try to get (*AniDB).User() from the cache if it's unset --- anidb.go | 8 +++++++- auth.go | 1 + usercache.go | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/anidb.go b/anidb.go index b553108..bb0d658 100644 --- a/anidb.go +++ b/anidb.go @@ -33,7 +33,13 @@ func NewAniDB() *AniDB { func (adb *AniDB) User() *User { if adb != nil && adb.udp != nil { - return adb.udp.user + if adb.udp.user != nil { + return adb.udp.user + } else if adb.udp.credentials != nil { + // see if we can get it from the cache + adb.udp.user = UserByName(decrypt(adb.udp.credentials.username)) + return adb.udp.user + } } return nil } diff --git a/auth.go b/auth.go index 26714fd..6e4af5a 100644 --- a/auth.go +++ b/auth.go @@ -117,6 +117,7 @@ func (udp *udpWrap) ReAuth() udpapi.APIReply { udp.connected = err == nil if udp.connected { + // We can't use SendRecv here as it would deadlock ch := make(chan udpapi.APIReply, 1) udp.sendQueueCh <- paramSet{ cmd: "USER", diff --git a/usercache.go b/usercache.go index f1e4491..bb5bda2 100644 --- a/usercache.go +++ b/usercache.go @@ -19,6 +19,14 @@ func (uid UID) User() *User { return nil } +func UserByName(name string) *User { + var uid UID + if CacheGet(&uid, "user", "by-name", name) == nil { + return uid.User() + } + return nil +} + func (adb *AniDB) GetCurrentUser() <-chan *User { ch := make(chan *User, 1) -- 2.44.0