From eb054a5068f4043959c31cadfa48baf74d8e4419 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 2 Jul 2015 20:19:32 +0100 Subject: [PATCH] Added auto updater --- Filtration.Tests/Filtration.Tests.csproj | 2 + Filtration.Tests/Services/TestHTTPService.cs | 23 +++++ .../Services/TestUpdateService.cs | 53 ++++++++++ Filtration/App.config | 6 ++ Filtration/Filtration.csproj | 12 ++- Filtration/Models/UpdateData.cs | 25 +++++ Filtration/Properties/Settings.Designer.cs | 24 +++++ Filtration/Properties/Settings.settings | 6 ++ Filtration/Resources/Images/doge.jpg | Bin 108892 -> 0 bytes Filtration/Services/HTTPService.cs | 31 ++++++ Filtration/Services/UpdateCheckService.cs | 44 ++++++++ Filtration/ViewModels/MainWindowViewModel.cs | 44 +++++++- .../ViewModels/SettingsPageViewModel.cs | 3 + .../ViewModels/UpdateAvailableViewModel.cs | 96 ++++++++++++++++++ Filtration/Views/MainWindow.xaml | 3 +- Filtration/Views/SettingsPageView.xaml | 8 +- Filtration/Views/UpdateAvailableView.xaml | 38 +++++++ Filtration/Views/UpdateAvailableView.xaml.cs | 27 +++++ .../WindsorInstallers/ServicesInstaller.cs | 10 ++ .../WindsorInstallers/ViewModelsInstaller.cs | 7 +- 20 files changed, 455 insertions(+), 7 deletions(-) create mode 100644 Filtration.Tests/Services/TestHTTPService.cs create mode 100644 Filtration.Tests/Services/TestUpdateService.cs create mode 100644 Filtration/Models/UpdateData.cs delete mode 100644 Filtration/Resources/Images/doge.jpg create mode 100644 Filtration/Services/HTTPService.cs create mode 100644 Filtration/Services/UpdateCheckService.cs create mode 100644 Filtration/ViewModels/UpdateAvailableViewModel.cs create mode 100644 Filtration/Views/UpdateAvailableView.xaml create mode 100644 Filtration/Views/UpdateAvailableView.xaml.cs diff --git a/Filtration.Tests/Filtration.Tests.csproj b/Filtration.Tests/Filtration.Tests.csproj index d26871f..5a248a6 100644 --- a/Filtration.Tests/Filtration.Tests.csproj +++ b/Filtration.Tests/Filtration.Tests.csproj @@ -48,8 +48,10 @@ + + diff --git a/Filtration.Tests/Services/TestHTTPService.cs b/Filtration.Tests/Services/TestHTTPService.cs new file mode 100644 index 0000000..54b7665 --- /dev/null +++ b/Filtration.Tests/Services/TestHTTPService.cs @@ -0,0 +1,23 @@ +using Filtration.Services; +using NUnit.Framework; + +namespace Filtration.Tests.Services +{ + [Ignore("Integration Test - Makes real HTTP call")] + [TestFixture] + public class TestHTTPService + { + [Test] + public async void GetContent_FetchesDataFromUrl() + { + // Arrange + var service = new HTTPService(); + + // Act + var result = await service.GetContentAsync("http://ben-wallis.github.io/Filtration/filtration_version.xml"); + + // Assert + Assert.IsNotNull(result); + } + } +} diff --git a/Filtration.Tests/Services/TestUpdateService.cs b/Filtration.Tests/Services/TestUpdateService.cs new file mode 100644 index 0000000..343c3ee --- /dev/null +++ b/Filtration.Tests/Services/TestUpdateService.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Filtration.Models; +using Filtration.Services; +using Moq; +using NUnit.Framework; + +namespace Filtration.Tests.Services +{ + [TestFixture] + public class TestUpdateService + { + [Test] + public void DeserializeUpdateData_ReturnsCorrectData() + { + // Arrange + var testInputData = @" + 0.2 + 2015-07-01 + http://www.google.com + * Release notes line 1 +* Release notes line 2 +* More really great release notes! + "; + + var expectedResult = new UpdateData + { + CurrentVersion = 0.2m, + DownloadUrl = "http://www.google.com", + ReleaseDate = new DateTime(2015, 7, 1), + ReleaseNotes = @"* Release notes line 1 +* Release notes line 2 +* More really great release notes!" + }; + + var mockHTTPService = new Mock(); + var service = new UpdateCheckService(mockHTTPService.Object); + + // Act + var result = service.DeserializeUpdateData(testInputData); + + // Assert + Assert.AreEqual(expectedResult.CurrentVersion, result.CurrentVersion); + Assert.AreEqual(expectedResult.DownloadUrl, result.DownloadUrl); + Assert.AreEqual(expectedResult.ReleaseDate, result.ReleaseDate); + Assert.AreEqual(expectedResult.ReleaseNotes, result.ReleaseNotes); + } + + } +} diff --git a/Filtration/App.config b/Filtration/App.config index eee4e61..9cd140a 100644 --- a/Filtration/App.config +++ b/Filtration/App.config @@ -16,6 +16,12 @@ True + + 0 + + + False + diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj index 5421666..5c4307c 100644 --- a/Filtration/Filtration.csproj +++ b/Filtration/Filtration.csproj @@ -139,10 +139,13 @@ + + + @@ -172,6 +175,7 @@ + AvalonDockWorkspaceView.xaml @@ -223,6 +227,9 @@ StartPageView.xaml + + UpdateAvailableView.xaml + @@ -330,6 +337,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + @@ -397,7 +408,6 @@ - Always diff --git a/Filtration/Models/UpdateData.cs b/Filtration/Models/UpdateData.cs new file mode 100644 index 0000000..b7a556a --- /dev/null +++ b/Filtration/Models/UpdateData.cs @@ -0,0 +1,25 @@ +using System; +using System.Text.RegularExpressions; + +namespace Filtration.Models +{ + [Serializable] + public class UpdateData + { + private string _releaseNotes; + + public string DownloadUrl { get; set; } + public decimal CurrentVersion { get; set; } + public DateTime ReleaseDate { get; set; } + + public string ReleaseNotes + { + get { return _releaseNotes; } + set + { + var r = new Regex("(? True + + 0 + + + False + \ No newline at end of file diff --git a/Filtration/Resources/Images/doge.jpg b/Filtration/Resources/Images/doge.jpg deleted file mode 100644 index bfb772ce0bc0c35a9ac0064ecbb6c2f6056e2993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108892 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 >5D8iCAZ+oZl`=(?u-U^$Mn6}b#>(WtG*N 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 diff --git a/Filtration/Services/HTTPService.cs b/Filtration/Services/HTTPService.cs new file mode 100644 index 0000000..a9f728e --- /dev/null +++ b/Filtration/Services/HTTPService.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Net; +using System.Threading.Tasks; + +namespace Filtration.Services +{ + internal interface IHTTPService + { + Task GetContentAsync(string url); + } + + internal class HTTPService : IHTTPService + { + public async Task GetContentAsync(string url) + { + var urlUri = new Uri(url); + + var request = WebRequest.Create(urlUri); + + var response = await request.GetResponseAsync(); + using (var s = response.GetResponseStream()) + { + using (var sr = new StreamReader(s)) + { + return sr.ReadToEnd(); + } + } + } + } +} diff --git a/Filtration/Services/UpdateCheckService.cs b/Filtration/Services/UpdateCheckService.cs new file mode 100644 index 0000000..5a01c83 --- /dev/null +++ b/Filtration/Services/UpdateCheckService.cs @@ -0,0 +1,44 @@ +using System.IO; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Serialization; +using Filtration.Models; + +namespace Filtration.Services +{ + internal interface IUpdateCheckService + { + Task GetUpdateData(); + } + + internal class UpdateCheckService : IUpdateCheckService + { + private readonly IHTTPService _httpService; + private const string UpdateDataUrl = "http://ben-wallis.github.io/Filtration/filtration_version.xml"; + + public UpdateCheckService(IHTTPService httpService) + { + _httpService = httpService; + } + + public async Task GetUpdateData() + { + var updateXml = await _httpService.GetContentAsync(UpdateDataUrl); + return (DeserializeUpdateData(updateXml)); + } + + public UpdateData DeserializeUpdateData(string updateDataString) + { + var serializer = new XmlSerializer(typeof(UpdateData)); + object result; + + using (TextReader reader = new StringReader(updateDataString)) + { + result = serializer.Deserialize(reader); + } + + return result as UpdateData; + } + + } +} diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index e0a29df..720fddd 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -2,13 +2,17 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Media; using System.Windows.Media.Imaging; using Filtration.Common.ViewModels; using Filtration.Interface; +using Filtration.Models; using Filtration.ObjectModel.ThemeEditor; +using Filtration.Properties; using Filtration.Repositories; +using Filtration.Services; using Filtration.ThemeEditor.Providers; using Filtration.ThemeEditor.Services; using Filtration.ThemeEditor.ViewModels; @@ -36,6 +40,8 @@ namespace Filtration.ViewModels private readonly ISettingsPageViewModel _settingsPageViewModel; private readonly IThemeProvider _themeProvider; private readonly IThemeService _themeService; + private readonly IUpdateCheckService _updateCheckService; + private readonly IUpdateAvailableViewModel _updateAvailableViewModel; public MainWindowViewModel(IItemFilterScriptRepository itemFilterScriptRepository, IItemFilterScriptTranslator itemFilterScriptTranslator, @@ -43,7 +49,9 @@ namespace Filtration.ViewModels IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel, ISettingsPageViewModel settingsPageViewModel, IThemeProvider themeProvider, - IThemeService themeService) + IThemeService themeService, + IUpdateCheckService updateCheckService, + IUpdateAvailableViewModel updateAvailableViewModel) { _itemFilterScriptRepository = itemFilterScriptRepository; _itemFilterScriptTranslator = itemFilterScriptTranslator; @@ -52,6 +60,8 @@ namespace Filtration.ViewModels _settingsPageViewModel = settingsPageViewModel; _themeProvider = themeProvider; _themeService = themeService; + _updateCheckService = updateCheckService; + _updateAvailableViewModel = updateAvailableViewModel; NewScriptCommand = new RelayCommand(OnNewScriptCommand); CopyScriptCommand = new RelayCommand(OnCopyScriptCommand, () => ActiveDocumentIsScript); @@ -128,6 +138,7 @@ namespace Filtration.ViewModels } } }); + CheckForUpdates(); } public RelayCommand OpenScriptCommand { get; private set; } @@ -162,6 +173,37 @@ namespace Filtration.ViewModels public RelayCommand ClearFiltersCommand { get; private set; } + public async void CheckForUpdates() + { + var assembly = Assembly.GetExecutingAssembly(); + var assemblyVersion = FileVersionInfo.GetVersionInfo(assembly.Location); + var currentVersion = Convert.ToDecimal(assemblyVersion.FileMajorPart + "." + assemblyVersion.FileMinorPart); + + var result = await _updateCheckService.GetUpdateData(); + + try + { + if (result.CurrentVersion > currentVersion) + { + if (Settings.Default.SuppressUpdates == false || + Settings.Default.SuppressUpdatesUpToVersion < result.CurrentVersion) + { + Settings.Default.SuppressUpdates = false; + Settings.Default.Save(); + var updateAvailableView = new UpdateAvailableView {DataContext = _updateAvailableViewModel}; + _updateAvailableViewModel.Initialise(result, currentVersion); + _updateAvailableViewModel.OnRequestClose += (s, e) => updateAvailableView.Close(); + updateAvailableView.ShowDialog(); + } + } + } + catch (Exception) + { + // We don't care if the update check fails, because it could fail for multiple reasons + // including the user blocking Filtration in their firewall. + } + } + public ImageSource Icon { get; private set; } public IAvalonDockWorkspaceViewModel AvalonDockWorkspaceViewModel diff --git a/Filtration/ViewModels/SettingsPageViewModel.cs b/Filtration/ViewModels/SettingsPageViewModel.cs index 2526017..ac99b2a 100644 --- a/Filtration/ViewModels/SettingsPageViewModel.cs +++ b/Filtration/ViewModels/SettingsPageViewModel.cs @@ -22,11 +22,13 @@ namespace Filtration.ViewModels DefaultFilterDirectory = Settings.Default.DefaultFilterDirectory; ExtraLineBetweenBlocks = Settings.Default.ExtraLineBetweenBlocks; + SuppressUpdateNotifications = Settings.Default.SuppressUpdates; } public RelayCommand SaveCommand { get; private set; } public string DefaultFilterDirectory { get; set; } public bool ExtraLineBetweenBlocks { get; set; } + public bool SuppressUpdateNotifications { get; set; } private void OnSaveCommand() { @@ -35,6 +37,7 @@ namespace Filtration.ViewModels _itemFilterPersistenceService.SetItemFilterScriptDirectory(DefaultFilterDirectory); Settings.Default.ExtraLineBetweenBlocks = ExtraLineBetweenBlocks; + Settings.Default.SuppressUpdates = SuppressUpdateNotifications; } catch (DirectoryNotFoundException) { diff --git a/Filtration/ViewModels/UpdateAvailableViewModel.cs b/Filtration/ViewModels/UpdateAvailableViewModel.cs new file mode 100644 index 0000000..5cf6ed0 --- /dev/null +++ b/Filtration/ViewModels/UpdateAvailableViewModel.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Filtration.Models; +using Filtration.Properties; +using GalaSoft.MvvmLight.CommandWpf; + +namespace Filtration.ViewModels +{ + internal interface IUpdateAvailableViewModel + { + event EventHandler OnRequestClose; + void Initialise(UpdateData updateData, decimal currentVersion); + decimal CurrentVersion { get; } + decimal NewVersion { get; } + string ReleaseNotes { get; } + DateTime ReleaseDate { get; } + } + + internal class UpdateAvailableViewModel : IUpdateAvailableViewModel + { + private UpdateData _updateData; + private decimal _currentVersion; + + public UpdateAvailableViewModel() + { + DownloadCommand = new RelayCommand(OnDownloadCommand); + AskLaterCommand = new RelayCommand(OnAskLaterCommand); + NeverAskAgainCommand = new RelayCommand(OnNeverAskAgainCommand); + } + + public event EventHandler OnRequestClose; + + public RelayCommand NeverAskAgainCommand { get; private set; } + public RelayCommand AskLaterCommand { get; private set; } + public RelayCommand DownloadCommand { get; private set; } + + public void Initialise(UpdateData updateData, decimal currentVersion) + { + _currentVersion = currentVersion; + _updateData = updateData; + } + + public decimal CurrentVersion + { + get { return _currentVersion; } + } + + public decimal NewVersion + { + get { return _updateData.CurrentVersion; } + } + + public string ReleaseNotes + { + get { return _updateData.ReleaseNotes; } + } + + public DateTime ReleaseDate + { + get { return _updateData.ReleaseDate; } + } + + private void OnDownloadCommand() + { + Process.Start(_updateData.DownloadUrl); + } + + private void OnNeverAskAgainCommand() + { + Settings.Default.SuppressUpdates = true; + Settings.Default.SuppressUpdatesUpToVersion = _updateData.CurrentVersion; + Settings.Default.Save(); + CloseWindow(); + } + + private void OnAskLaterCommand() + { + CloseWindow(); + } + + private void CloseWindow() + { + if (OnRequestClose != null) + { + OnRequestClose(this, new EventArgs()); + } + } + } + +} + diff --git a/Filtration/Views/MainWindow.xaml b/Filtration/Views/MainWindow.xaml index 3e44721..ff8670e 100644 --- a/Filtration/Views/MainWindow.xaml +++ b/Filtration/Views/MainWindow.xaml @@ -28,8 +28,7 @@ - One day there will be something here! Maybe recent documents or something? For now here's a picture of Doge: - + Recent Documents will go here in a future release. diff --git a/Filtration/Views/SettingsPageView.xaml b/Filtration/Views/SettingsPageView.xaml index 20a7c6e..a462640 100644 --- a/Filtration/Views/SettingsPageView.xaml +++ b/Filtration/Views/SettingsPageView.xaml @@ -25,11 +25,15 @@ + + Default Filter Directory: - Add blank line between blocks when saving - + Add blank line between blocks when saving + + Suppress update notifications for current version + diff --git a/Filtration/Views/UpdateAvailableView.xaml b/Filtration/Views/UpdateAvailableView.xaml new file mode 100644 index 0000000..a147587 --- /dev/null +++ b/Filtration/Views/UpdateAvailableView.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Filtration/Views/UpdateAvailableView.xaml.cs b/Filtration/Views/UpdateAvailableView.xaml.cs new file mode 100644 index 0000000..23004c7 --- /dev/null +++ b/Filtration/Views/UpdateAvailableView.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace Filtration.Views +{ + ///

+ /// Interaction logic for UpdateAvailableView.xaml + /// + public partial class UpdateAvailableView : Window + { + public UpdateAvailableView() + { + InitializeComponent(); + } + } +} diff --git a/Filtration/WindsorInstallers/ServicesInstaller.cs b/Filtration/WindsorInstallers/ServicesInstaller.cs index 51058e7..107ffd4 100644 --- a/Filtration/WindsorInstallers/ServicesInstaller.cs +++ b/Filtration/WindsorInstallers/ServicesInstaller.cs @@ -24,6 +24,16 @@ namespace Filtration.WindsorInstallers Component.For() .ImplementedBy() .LifeStyle.Singleton); + + container.Register( + Component.For() + .ImplementedBy() + .LifeStyle.Singleton); + + container.Register( + Component.For() + .ImplementedBy() + .LifeStyle.Singleton); } } } diff --git a/Filtration/WindsorInstallers/ViewModelsInstaller.cs b/Filtration/WindsorInstallers/ViewModelsInstaller.cs index af96427..d002ac1 100644 --- a/Filtration/WindsorInstallers/ViewModelsInstaller.cs +++ b/Filtration/WindsorInstallers/ViewModelsInstaller.cs @@ -60,7 +60,12 @@ namespace Filtration.WindsorInstallers Component.For() .ImplementedBy() .LifeStyle.Transient); - + + container.Register( + Component.For() + .ImplementedBy() + .LifeStyle.Transient); + container.Register( Component.For().AsFactory());