using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using Newtonsoft.Json; using NLog; using NzbDrone.Common; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Core.Configuration; namespace NzbDrone.Core.Update { public interface IUpdatePackageProvider { UpdatePackage GetLatestUpdate(); } public class UpdatePackageProvider : IUpdatePackageProvider { private readonly IConfigFileProvider _configFileProvider; private readonly IHttpProvider _httpProvider; private readonly Logger _logger; public UpdatePackageProvider(IConfigFileProvider configFileProvider, IHttpProvider httpProvider, Logger logger) { _configFileProvider = configFileProvider; _httpProvider = httpProvider; _logger = logger; } public UpdatePackage GetLatestUpdate() { var url = String.Format("{0}/v1/update/{1}?version={2}", Services.RootUrl, _configFileProvider.Branch, BuildInfo.Version); var update = JsonConvert.DeserializeObject(_httpProvider.DownloadString(url)); if (!update.Available) return null; return update.UpdatePackage; } } }