diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-02-18 11:33:30 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-02-18 11:33:30 +0200 |
| commit | 8c203b26d50818a1b16b2a7ec48eca7b082653f4 (patch) | |
| tree | a89d88546960dbe05271eb587a25001fb767c638 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs | |
| parent | 21cdc1e12814f72e6aac795f9ddd2a32b9614389 (diff) | |
| download | Tango-8c203b26d50818a1b16b2a7ec48eca7b082653f4.tar.gz Tango-8c203b26d50818a1b16b2a7ec48eca7b082653f4.zip | |
Implemented new Machine Studio Publish CLI and UI.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs deleted file mode 100644 index 206a2d31b..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs +++ /dev/null @@ -1,242 +0,0 @@ -using FluentFTP; -using Ionic.Zip; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime.CompilerServices; -using System.ServiceModel; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows; -using Tango.Core.Commands; -using Tango.Core.Cryptography; -using Tango.Core.Helpers; -using Tango.Core.IO; -using Tango.MachineStudio.Common; -using Tango.MachineStudio.Common.Update; -using Tango.Settings; -using Tango.SharedUI; -using Tango.Transport.Web; -using Tango.Web; - -namespace Tango.MachineStudio.Publisher -{ - public class MainWindowVM : ViewModel - { - private BasicHashGenerator _hashGenerator; - private String _appPath = AppDomain.CurrentDomain.BaseDirectory + "..\\Release"; - private IMachineStudioUpdateService _client; - - private String _email; - - public String Email - { - get { return _email; } - set { _email = value; RaisePropertyChangedAuto(); } - } - - private String _password; - - public String Password - { - get { return _password; } - set { _password = value; RaisePropertyChangedAuto(); } - } - - private String _comments; - - public String Comments - { - get { return _comments; } - set { _comments = value; RaisePropertyChangedAuto(); } - } - - private DeploymentSlot _deploymentSlot; - public DeploymentSlot DeploymentSlot - { - get { return _deploymentSlot; } - set - { - _deploymentSlot = value; RaisePropertyChangedAuto(); - - SettingsManager.Default.GetOrCreate<MachineStudioSettings>().DeploymentSlot = _deploymentSlot; - UpdateVersions(); - } - } - - private String _currentVersion; - - public String CurrentVersion - { - get { return _currentVersion; } - set { _currentVersion = value; RaisePropertyChangedAuto(); } - } - - private String _latestVersion; - - public String LatestVersion - { - get { return _latestVersion; } - set { _latestVersion = value; RaisePropertyChangedAuto(); } - } - - private double _maxProgress; - - public double MaxProgress - { - get { return _maxProgress; } - set { _maxProgress = value; RaisePropertyChangedAuto(); } - } - - private double _progress; - - public double Progress - { - get { return _progress; } - set { _progress = value; RaisePropertyChangedAuto(); } - } - - private bool _isUpdating; - - public bool IsUpdating - { - get { return _isUpdating; } - set { _isUpdating = value; RaisePropertyChangedAuto(); } - } - - public RelayCommand PublishCommand { get; set; } - - public MainWindowVM() - { - _client = new MachineStudioUpdateService(); - - MaxProgress = 100; - - _hashGenerator = new BasicHashGenerator(); - - PublishCommand = new RelayCommand(Publish, () => Email != null && Password != null && Comments != null && CurrentVersion != null && LatestVersion != null && !IsUpdating && Version.Parse(CurrentVersion) > Version.Parse(LatestVersion)); - - var client = new MachineStudioUpdateService(); - - UpdateVersions(); - - var settings = SettingsManager.Default.GetOrCreate<MachineStudioSettings>(); - - Email = settings.LastLoginEmail; - - var cryptographer = new Rfc2898Cryptographer(); - Password = cryptographer.Decrypt(settings.LastLoginPassword); - } - - private void UpdateVersions() - { - CurrentVersion = FileVersionInfo.GetVersionInfo(_appPath + "\\Tango.MachineStudio.UI.exe").ProductVersion; - LatestVersion = _client.GetLatestVersion(new LatestVersionRequest()).Result.Version; - } - - private void Publish() - { - if (!ShowQuestion("Did you remember to synchronize production database ?")) - { - return; - } - - MaxProgress = 100; - Progress = 0; - - Task.Factory.StartNew(() => - { - IsUpdating = true; - String tempFile = TemporaryManager.CreateFile(); - - try - { - var response = _client.UploadVersion(new UploadVersionRequest() - { - Email = Email, - Password = _hashGenerator.Encrypt(Password), - Version = CurrentVersion.ToString(), - Comments = Comments, - }).Result; - - using (ZipFile zip = new ZipFile()) - { - zip.AddDirectory(Path.Combine(_appPath, "x86"), "/x86"); - zip.AddDirectory(Path.Combine(_appPath, "x64"), "/x64"); - - foreach (var file in Directory.GetFiles(_appPath, "*.*", SearchOption.TopDirectoryOnly)) - { - zip.AddFile(file, "/"); - } - - zip.SaveProgress += (x, e) => - { - MaxProgress = e.TotalBytesToTransfer; - Progress = e.BytesTransferred; - }; - - zip.Save(tempFile); - } - - Progress = 0; - MaxProgress = 100; - - using (StorageBlobUploader uploader = new StorageBlobUploader(response.BlobAddress,tempFile)) - { - uploader.Progress += (x, e) => - { - InvokeUINow(() => - { - Progress = ((double)e.Current / (double)e.Total) * 100d; - }); - }; - - uploader.Upload().Wait(); - } - - _client.NotifyUploadCompleted(new UploadCompletedRequest() - { - AccessToken = response.Token, - }).Wait(); - - Progress = 0; - UpdateVersions(); - ShowInfo("Version published successfully!"); - } - catch (Exception ex) - { - ShowError(ex.FlattenMessage()); - } - finally - { - IsUpdating = false; - PathHelper.TryDeleteFile(tempFile); - } - }); - } - - private void ShowError(String error) - { - MessageBox.Show(error, "Machine Studio Publisher", MessageBoxButton.OK, MessageBoxImage.Error); - } - - private void ShowInfo(String message) - { - MessageBox.Show(message, "Machine Studio Publisher", MessageBoxButton.OK, MessageBoxImage.Information); - } - - private bool ShowQuestion(String message) - { - return MessageBox.Show(message, "Machine Studio Publisher", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes; - } - - protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null) - { - base.RaisePropertyChangedAuto(caller); - InvalidateRelayCommands(); - } - } -} |
