Răsfoiți Sursa

Remove GitHub updater and don't trow exception in release

Bond_009 6 ani în urmă
părinte
comite
40563dc6cc

+ 5 - 44
Emby.Server.Implementations/ApplicationHost.cs

@@ -368,7 +368,6 @@ namespace Emby.Server.Implementations
         protected IAuthService AuthService { get; private set; }
         protected IAuthService AuthService { get; private set; }
 
 
         public StartupOptions StartupOptions { get; private set; }
         public StartupOptions StartupOptions { get; private set; }
-        protected readonly string ReleaseAssetFilename;
 
 
         internal IPowerManagement PowerManagement { get; private set; }
         internal IPowerManagement PowerManagement { get; private set; }
         internal IImageEncoder ImageEncoder { get; private set; }
         internal IImageEncoder ImageEncoder { get; private set; }
@@ -393,7 +392,6 @@ namespace Emby.Server.Implementations
             StartupOptions options,
             StartupOptions options,
             IFileSystem fileSystem,
             IFileSystem fileSystem,
             IPowerManagement powerManagement,
             IPowerManagement powerManagement,
-            string releaseAssetFilename,
             IEnvironmentInfo environmentInfo,
             IEnvironmentInfo environmentInfo,
             IImageEncoder imageEncoder,
             IImageEncoder imageEncoder,
             ISystemEvents systemEvents,
             ISystemEvents systemEvents,
@@ -419,7 +417,6 @@ namespace Emby.Server.Implementations
             Logger = LoggerFactory.CreateLogger("App");
             Logger = LoggerFactory.CreateLogger("App");
 
 
             StartupOptions = options;
             StartupOptions = options;
-            ReleaseAssetFilename = releaseAssetFilename;
             PowerManagement = powerManagement;
             PowerManagement = powerManagement;
 
 
             ImageEncoder = imageEncoder;
             ImageEncoder = imageEncoder;
@@ -2292,48 +2289,12 @@ namespace Emby.Server.Implementations
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="progress">The progress.</param>
         /// <param name="progress">The progress.</param>
         /// <returns>Task{CheckForUpdateResult}.</returns>
         /// <returns>Task{CheckForUpdateResult}.</returns>
-        public async Task<CheckForUpdateResult> CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress<double> progress)
+        public Task<CheckForUpdateResult> CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress<double> progress)
         {
         {
-            var updateLevel = SystemUpdateLevel;
-            var cacheLength = updateLevel == PackageVersionClass.Release ?
-                TimeSpan.FromHours(12) :
-                TimeSpan.FromMinutes(5);
-
-            try
-            {
-                var result = await new GithubUpdater(HttpClient, JsonSerializer).CheckForUpdateResult("MediaBrowser",
-                    "Emby.Releases",
-                    ApplicationVersion,
-                    updateLevel,
-                    ReleaseAssetFilename,
-                    "MBServer",
-                    UpdateTargetFileName,
-                    cacheLength,
-                    cancellationToken).ConfigureAwait(false);
-
-                HasUpdateAvailable = result.IsUpdateAvailable;
-
-                return result;
-            }
-            catch (HttpException ex)
-            {
-                // users are overreacting to this occasionally failing
-                if (ex.StatusCode.HasValue && ex.StatusCode.Value == HttpStatusCode.Forbidden)
-                {
-                    HasUpdateAvailable = false;
-                    return new CheckForUpdateResult
-                    {
-                        IsUpdateAvailable = false
-                    };
-                }
-
-                throw;
-            }
-        }
-
-        protected virtual string UpdateTargetFileName
-        {
-            get { return "Mbserver.zip"; }
+#if DEBUG
+            throw new Exception("Unimplemented");
+#endif
+            return Task.FromResult(new CheckForUpdateResult());
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 2 - 2
Jellyfin.Server/CoreAppHost.cs

@@ -11,8 +11,8 @@ namespace Jellyfin.Server
 {
 {
     public class CoreAppHost : ApplicationHost
     public class CoreAppHost : ApplicationHost
     {
     {
-        public CoreAppHost(ServerApplicationPaths applicationPaths, ILoggerFactory loggerFactory, StartupOptions options, IFileSystem fileSystem, IPowerManagement powerManagement, string releaseAssetFilename, IEnvironmentInfo environmentInfo, MediaBrowser.Controller.Drawing.IImageEncoder imageEncoder, ISystemEvents systemEvents, MediaBrowser.Common.Net.INetworkManager networkManager)
-            : base(applicationPaths, loggerFactory, options, fileSystem, powerManagement, releaseAssetFilename, environmentInfo, imageEncoder, systemEvents, networkManager)
+        public CoreAppHost(ServerApplicationPaths applicationPaths, ILoggerFactory loggerFactory, StartupOptions options, IFileSystem fileSystem, IPowerManagement powerManagement, IEnvironmentInfo environmentInfo, MediaBrowser.Controller.Drawing.IImageEncoder imageEncoder, ISystemEvents systemEvents, MediaBrowser.Common.Net.INetworkManager networkManager)
+            : base(applicationPaths, loggerFactory, options, fileSystem, powerManagement, environmentInfo, imageEncoder, systemEvents, networkManager)
         {
         {
         }
         }
 
 

+ 0 - 1
Jellyfin.Server/Program.cs

@@ -73,7 +73,6 @@ namespace Jellyfin.Server
                 options,
                 options,
                 fileSystem,
                 fileSystem,
                 new PowerManagement(),
                 new PowerManagement(),
-                "embyserver-mono_{version}.zip",
                 environmentInfo,
                 environmentInfo,
                 new NullImageEncoder(),
                 new NullImageEncoder(),
                 new SystemEvents(_loggerFactory.CreateLogger("SystemEvents")),
                 new SystemEvents(_loggerFactory.CreateLogger("SystemEvents")),

+ 0 - 274
MediaBrowser.Common/Updates/GithubUpdater.cs

@@ -1,274 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.Updates;
-
-namespace MediaBrowser.Common.Updates
-{
-    public class GithubUpdater
-    {
-        private readonly IHttpClient _httpClient;
-        private readonly IJsonSerializer _jsonSerializer;
-
-        public GithubUpdater(IHttpClient httpClient, IJsonSerializer jsonSerializer)
-        {
-            _httpClient = httpClient;
-            _jsonSerializer = jsonSerializer;
-        }
-
-        public async Task<CheckForUpdateResult> CheckForUpdateResult(string organzation, string repository, Version minVersion, PackageVersionClass updateLevel, string assetFilename, string packageName, string targetFilename, TimeSpan cacheLength, CancellationToken cancellationToken)
-        {
-            var url = string.Format("https://api.github.com/repos/{0}/{1}/releases", organzation, repository);
-
-            var options = new HttpRequestOptions
-            {
-                Url = url,
-                EnableKeepAlive = false,
-                CancellationToken = cancellationToken,
-                UserAgent = "Emby/3.0",
-                BufferContent = false
-            };
-
-            if (cacheLength.Ticks > 0)
-            {
-                options.CacheMode = CacheMode.Unconditional;
-                options.CacheLength = cacheLength;
-            }
-
-            using (var response = await _httpClient.SendAsync(options, "GET").ConfigureAwait(false))
-            using (var stream = response.Content)
-            {
-                var obj = await _jsonSerializer.DeserializeFromStreamAsync<RootObject[]>(stream).ConfigureAwait(false);
-
-                return CheckForUpdateResult(obj, minVersion, updateLevel, assetFilename, packageName, targetFilename);
-            }
-        }
-
-        private CheckForUpdateResult CheckForUpdateResult(RootObject[] obj, Version minVersion, PackageVersionClass updateLevel, string assetFilename, string packageName, string targetFilename)
-        {
-            if (updateLevel == PackageVersionClass.Release)
-            {
-                // Technically all we need to do is check that it's not pre-release
-                // But let's addititional checks for -beta and -dev to handle builds that might be temporarily tagged incorrectly.
-                obj = obj.Where(i => !i.prerelease && !i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) && !i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase)).ToArray();
-            }
-            else if (updateLevel == PackageVersionClass.Beta)
-            {
-                obj = obj.Where(i => i.prerelease && i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase)).ToArray();
-            }
-            else if (updateLevel == PackageVersionClass.Dev)
-            {
-                obj = obj.Where(i => !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) || i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase)).ToArray();
-            }
-
-            var availableUpdate = obj
-                .Select(i => CheckForUpdateResult(i, minVersion, assetFilename, packageName, targetFilename))
-                .Where(i => i != null)
-                .OrderByDescending(i => Version.Parse(i.AvailableVersion))
-                .FirstOrDefault();
-
-            return availableUpdate ?? new CheckForUpdateResult
-            {
-                IsUpdateAvailable = false
-            };
-        }
-
-        private bool MatchesUpdateLevel(RootObject i, PackageVersionClass updateLevel)
-        {
-            if (updateLevel == PackageVersionClass.Beta)
-            {
-                return i.prerelease && i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase);
-            }
-            if (updateLevel == PackageVersionClass.Dev)
-            {
-                return !i.prerelease || i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) ||
-                       i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase);
-            }
-
-            // Technically all we need to do is check that it's not pre-release
-            // But let's addititional checks for -beta and -dev to handle builds that might be temporarily tagged incorrectly.
-            return !i.prerelease && !i.name.EndsWith("-beta", StringComparison.OrdinalIgnoreCase) &&
-                   !i.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase);
-        }
-
-        public async Task<List<RootObject>> GetLatestReleases(string organzation, string repository, string assetFilename, CancellationToken cancellationToken)
-        {
-            var list = new List<RootObject>();
-
-            var url = string.Format("https://api.github.com/repos/{0}/{1}/releases", organzation, repository);
-
-            var options = new HttpRequestOptions
-            {
-                Url = url,
-                EnableKeepAlive = false,
-                CancellationToken = cancellationToken,
-                UserAgent = "Emby/3.0",
-                BufferContent = false
-            };
-
-            using (var response = await _httpClient.SendAsync(options, "GET").ConfigureAwait(false))
-            using (var stream = response.Content)
-            {
-                var obj = await _jsonSerializer.DeserializeFromStreamAsync<RootObject[]>(stream).ConfigureAwait(false);
-
-                obj = obj.Where(i => (i.assets ?? new List<Asset>()).Any(a => IsAsset(a, assetFilename, i.tag_name))).ToArray();
-
-                list.AddRange(obj.Where(i => MatchesUpdateLevel(i, PackageVersionClass.Release)).OrderByDescending(GetVersion).Take(1));
-                list.AddRange(obj.Where(i => MatchesUpdateLevel(i, PackageVersionClass.Beta)).OrderByDescending(GetVersion).Take(1));
-                list.AddRange(obj.Where(i => MatchesUpdateLevel(i, PackageVersionClass.Dev)).OrderByDescending(GetVersion).Take(1));
-
-                return list;
-            }
-        }
-
-        public Version GetVersion(RootObject obj)
-        {
-            Version version;
-            if (!Version.TryParse(obj.tag_name, out version))
-            {
-                return new Version(1, 0);
-            }
-
-            return version;
-        }
-
-        private CheckForUpdateResult CheckForUpdateResult(RootObject obj, Version minVersion, string assetFilename, string packageName, string targetFilename)
-        {
-            Version version;
-            var versionString = obj.tag_name;
-            if (!Version.TryParse(versionString, out version))
-            {
-                return null;
-            }
-
-            if (version < minVersion)
-            {
-                return null;
-            }
-
-            var asset = (obj.assets ?? new List<Asset>()).FirstOrDefault(i => IsAsset(i, assetFilename, versionString));
-
-            if (asset == null)
-            {
-                return null;
-            }
-
-            return new CheckForUpdateResult
-            {
-                AvailableVersion = version.ToString(),
-                IsUpdateAvailable = version > minVersion,
-                Package = new PackageVersionInfo
-                {
-                    classification = obj.prerelease ?
-                        (obj.name.EndsWith("-dev", StringComparison.OrdinalIgnoreCase) ? PackageVersionClass.Dev : PackageVersionClass.Beta) :
-                        PackageVersionClass.Release,
-                    name = packageName,
-                    sourceUrl = asset.browser_download_url,
-                    targetFilename = targetFilename,
-                    versionStr = version.ToString(),
-                    requiredVersionStr = "1.0.0",
-                    description = obj.body,
-                    infoUrl = obj.html_url
-                }
-            };
-        }
-
-        private bool IsAsset(Asset asset, string assetFilename, string version)
-        {
-            var downloadFilename = Path.GetFileName(asset.browser_download_url) ?? string.Empty;
-
-            assetFilename = assetFilename.Replace("{version}", version);
-
-            if (downloadFilename.IndexOf(assetFilename, StringComparison.OrdinalIgnoreCase) != -1)
-            {
-                return true;
-            }
-
-            return string.Equals(assetFilename, downloadFilename, StringComparison.OrdinalIgnoreCase);
-        }
-
-        public class Uploader
-        {
-            public string login { get; set; }
-            public int id { get; set; }
-            public string avatar_url { get; set; }
-            public string gravatar_id { get; set; }
-            public string url { get; set; }
-            public string html_url { get; set; }
-            public string followers_url { get; set; }
-            public string following_url { get; set; }
-            public string gists_url { get; set; }
-            public string starred_url { get; set; }
-            public string subscriptions_url { get; set; }
-            public string organizations_url { get; set; }
-            public string repos_url { get; set; }
-            public string events_url { get; set; }
-            public string received_events_url { get; set; }
-            public string type { get; set; }
-            public bool site_admin { get; set; }
-        }
-
-        public class Asset
-        {
-            public string url { get; set; }
-            public int id { get; set; }
-            public string name { get; set; }
-            public object label { get; set; }
-            public Uploader uploader { get; set; }
-            public string content_type { get; set; }
-            public string state { get; set; }
-            public int size { get; set; }
-            public int download_count { get; set; }
-            public string created_at { get; set; }
-            public string updated_at { get; set; }
-            public string browser_download_url { get; set; }
-        }
-
-        public class Author
-        {
-            public string login { get; set; }
-            public int id { get; set; }
-            public string avatar_url { get; set; }
-            public string gravatar_id { get; set; }
-            public string url { get; set; }
-            public string html_url { get; set; }
-            public string followers_url { get; set; }
-            public string following_url { get; set; }
-            public string gists_url { get; set; }
-            public string starred_url { get; set; }
-            public string subscriptions_url { get; set; }
-            public string organizations_url { get; set; }
-            public string repos_url { get; set; }
-            public string events_url { get; set; }
-            public string received_events_url { get; set; }
-            public string type { get; set; }
-            public bool site_admin { get; set; }
-        }
-
-        public class RootObject
-        {
-            public string url { get; set; }
-            public string assets_url { get; set; }
-            public string upload_url { get; set; }
-            public string html_url { get; set; }
-            public int id { get; set; }
-            public string tag_name { get; set; }
-            public string target_commitish { get; set; }
-            public string name { get; set; }
-            public bool draft { get; set; }
-            public Author author { get; set; }
-            public bool prerelease { get; set; }
-            public string created_at { get; set; }
-            public string published_at { get; set; }
-            public List<Asset> assets { get; set; }
-            public string tarball_url { get; set; }
-            public string zipball_url { get; set; }
-            public string body { get; set; }
-        }
-    }
-}