Răsfoiți Sursa

Wait for the async authentication to finish when the JTW token expires

Claus Vium 6 ani în urmă
părinte
comite
c2ab0ad641
1 a modificat fișierele cu 9 adăugiri și 5 ștergeri
  1. 9 5
      MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs

+ 9 - 5
MediaBrowser.Providers/TV/TheTVDB/TvDbClientManager.cs

@@ -24,24 +24,28 @@ namespace MediaBrowser.Providers.TV.TheTVDB
         {
             _cache = memoryCache;
             _tvDbClient = new TvDbClient();
-            _tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey);
-            _tokenCreatedAt = DateTime.Now;
         }
 
-        public TvDbClient TvDbClient
+        private TvDbClient TvDbClient
         {
             get
             {
+                if (string.IsNullOrEmpty(_tvDbClient.Authentication.Token))
+                {
+                    _tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey).GetAwaiter().GetResult();
+                    _tokenCreatedAt = DateTime.Now;
+                }
+
                 // Refresh if necessary
                 if (_tokenCreatedAt < DateTime.Now.Subtract(TimeSpan.FromHours(20)))
                 {
                     try
                     {
-                        _tvDbClient.Authentication.RefreshTokenAsync();
+                        _tvDbClient.Authentication.RefreshTokenAsync().GetAwaiter().GetResult();
                     }
                     catch
                     {
-                        _tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey);
+                        _tvDbClient.Authentication.AuthenticateAsync(TvdbUtils.TvdbApiKey).GetAwaiter().GetResult();
                     }
 
                     _tokenCreatedAt = DateTime.Now;