]> git.lizzy.rs Git - go-anidb.git/commitdiff
anidb: Try to get (*AniDB).User() from the cache if it's unset
authorDiogo Franco (Kovensky) <diogomfranco@gmail.com>
Fri, 26 Jul 2013 01:54:40 +0000 (22:54 -0300)
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>
Fri, 26 Jul 2013 01:54:40 +0000 (22:54 -0300)
anidb.go
auth.go
usercache.go

index b553108674a4549e209e00c037be3aff17b56036..bb0d65846ba51572601b8c0959afa3bab7a37179 100644 (file)
--- 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 26714fd6b8e8d9c9443b912bbdde546e0915ec0a..6e4af5a83f4917c97d71854f0d21b2aeb5a2fbba 100644 (file)
--- 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",
index f1e44918ae65c2ca3d89251f89b1daf472bdaa59..bb5bda22175d0ef09af7892c9a4d30e6bf655e65 100644 (file)
@@ -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)