From: Diogo Franco (Kovensky) Date: Fri, 26 Jul 2013 01:54:40 +0000 (-0300) Subject: anidb: Try to get (*AniDB).User() from the cache if it's unset X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=2972daf46d4096f1fb7a41d30814b7186b31ac65;p=go-anidb.git anidb: Try to get (*AniDB).User() from the cache if it's unset --- 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)