Ver Fonte

add error handling to package retrieval

Luke Pulverenti há 9 anos atrás
pai
commit
56763c08a2

+ 19 - 20
MediaBrowser.Common.Implementations/Updates/InstallationManager.cs

@@ -194,37 +194,36 @@ namespace MediaBrowser.Common.Implementations.Updates
         /// <returns>Task{List{PackageInfo}}.</returns>
         public async Task<IEnumerable<PackageInfo>> GetAvailablePackagesWithoutRegistrationInfo(CancellationToken cancellationToken)
         {
-            using (var stream = await GetCachedPackages(cancellationToken).ConfigureAwait(false))
+            try
             {
-                var packages = _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
-
-                if ((DateTime.UtcNow - _lastPackageUpdateTime) > GetCacheLength())
+                using (var stream = _fileSystem.OpenRead(PackageCachePath))
                 {
-                    UpdateCachedPackages(CancellationToken.None, false);
-                }
-
-                return packages;
-            }
-        }
+                    var packages = _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
 
-        private string PackageCachePath
-        {
-            get { return Path.Combine(_appPaths.CachePath, "serverpackages.json"); }
-        }
+                    if ((DateTime.UtcNow - _lastPackageUpdateTime) > GetCacheLength())
+                    {
+                        UpdateCachedPackages(CancellationToken.None, false);
+                    }
 
-        private async Task<Stream> GetCachedPackages(CancellationToken cancellationToken)
-        {
-            try
-            {
-                return _fileSystem.OpenRead(PackageCachePath);
+                    return packages;
+                }
             }
             catch (Exception)
             {
 
             }
 
+            _lastPackageUpdateTime = DateTime.MinValue;
             await UpdateCachedPackages(cancellationToken, true).ConfigureAwait(false);
-            return _fileSystem.OpenRead(PackageCachePath);
+            using (var stream = _fileSystem.OpenRead(PackageCachePath))
+            {
+                return _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
+            }
+        }
+
+        private string PackageCachePath
+        {
+            get { return Path.Combine(_appPaths.CachePath, "serverpackages.json"); }
         }
 
         private readonly SemaphoreSlim _updateSemaphore = new SemaphoreSlim(1, 1);