From 73196dd48da9d16b6949ab9dec0ae0a5d63accfe Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 14 Feb 2019 18:50:59 +0200 Subject: Working on DFU firmware upgrade... --- .../Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml index 84f4b2d92..4de64db12 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml @@ -14,6 +14,17 @@ + + + + -- cgit v1.3.1 From 0cd0b590f62b31a8874ea21f225ba75c7a37053c Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 17 Feb 2019 11:46:27 +0200 Subject: Improved firmware upgrade.. Added firmware upgrade type selection to machine studio. Made upload hw config async when connecting. Removed success message for hw upload after connect. --- Software/DB/PPC/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/PPC/Tango_log.ldf | Bin 53673984 -> 53673984 bytes Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 22675456 -> 22675456 bytes .../ViewModels/FirmwareUpgradeViewVM.cs | 40 ++++++++++++++++++++- .../ViewModels/MainViewVM.cs | 18 ++++++---- .../Views/FirmwareUpgradeView.xaml | 17 ++++++--- .../Tango.Integration/Operation/MachineOperator.cs | 16 +++++++-- .../Upgrade/FirmwareUpgradeStatus.cs | 2 +- 9 files changed, 76 insertions(+), 17 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf index 1780c8e20..e31f48019 100644 Binary files a/Software/DB/PPC/Tango.mdf and b/Software/DB/PPC/Tango.mdf differ diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf index 804f5dce4..c69dbfe8d 100644 Binary files a/Software/DB/PPC/Tango_log.ldf and b/Software/DB/PPC/Tango_log.ldf differ diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index 415dd596f..3c2a1b2d6 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index dcaff17f4..6b8cc9fc2 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs index 14b9d0d8e..e3726f1dd 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs @@ -50,6 +50,35 @@ namespace Tango.MachineStudio.UI.ViewModels set { upgradeError = value; RaisePropertyChangedAuto(); } } + private bool _dfu; + public bool DFU + { + get { return _dfu; } + set + { + _dfu = value; RaisePropertyChangedAuto(); + + if (_dfu) + { + UploadTFP = false; + } + } + } + + private bool _uploadTFP; + public bool UploadTFP + { + get { return _uploadTFP; } + set + { + _uploadTFP = value; RaisePropertyChangedAuto(); + + if (_uploadTFP) + { + DFU = false; + } + } + } public RelayCommand SelectCommand { get; set; } @@ -59,6 +88,8 @@ namespace Tango.MachineStudio.UI.ViewModels public FirmwareUpgradeViewVM(IMachineOperator machineOperator, INotificationProvider notificationProvider) : base() { + DFU = true; + UploadTFP = true; _notification = notificationProvider; _operator = machineOperator; SelectCommand = new RelayCommand(BrowseForFile); @@ -101,7 +132,14 @@ namespace Tango.MachineStudio.UI.ViewModels { IsFree = false; - _operator.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU; + if (UploadTFP) + { + _operator.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE; + } + else + { + _operator.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU; + } _stream = new FileStream(SelectedFile, FileMode.Open); Handler = await _operator.UpgradeFirmware(_stream); diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index 573e56fff..1d03dd389 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -11,6 +11,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Media; using Tango.BL; +using Tango.BL.Builders; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.Core.DI; @@ -483,7 +484,7 @@ namespace Tango.MachineStudio.UI.ViewModels if (x.UploadHardwareConfiguration) { - UploadHardwareConfiguration(); + UploadHardwareConfiguration(false); } } @@ -525,7 +526,7 @@ namespace Tango.MachineStudio.UI.ViewModels if (x.UploadHardwareConfiguration) { - UploadHardwareConfiguration(); + UploadHardwareConfiguration(false); } } catch (Exception ex) @@ -615,18 +616,21 @@ namespace Tango.MachineStudio.UI.ViewModels InvalidateRelayCommands(); } - private async void UploadHardwareConfiguration() + private async void UploadHardwareConfiguration(bool showSuccessMessage = true) { try { using (ObservablesContext db = ObservablesContext.CreateDefault()) { - var config = db.Adapter.GetConfiguration(s => s.Guid == ApplicationManager.Machine.ConfigurationGuid); - var hw = db.Adapter.GetHardwareVersionByMachine(ApplicationManager.Machine.Guid); + var config = (await new ConfigurationBuilder(db).Set(ApplicationManager.Machine.ConfigurationGuid).WithIdsPacks().WithHardwareVersion().BuildAsync()); - await ApplicationManager.ConnectedMachine.UploadHardwareConfiguration(hw, config); + await ApplicationManager.ConnectedMachine.UploadHardwareConfiguration(config.HardwareVersion, config); + } + + if (showSuccessMessage) + { + NotificationProvider.ShowInfo("Hardware configuration uploaded successfully."); } - NotificationProvider.ShowInfo("Hardware configuration uploaded successfully."); } catch (Exception ex) { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml index 4de64db12..9acd0386a 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/FirmwareUpgradeView.xaml @@ -25,7 +25,7 @@ - + @@ -58,10 +58,17 @@ Press 'SELECT' to browse for an .tfp file (Tango Firmware Package). - - - - + + + + + + + + DFU + DFU & Package + + diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index d421120ea..e170b2fb8 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -2093,7 +2093,7 @@ namespace Tango.Integration.Operation FirmwareUpgradeManager upgradeManager = new FirmwareUpgradeManager(); upgradeManager.UpgradeProgress += (sender, e) => { - upgradeHandler.Total = 100; + upgradeHandler.Total = (long)e.Total; upgradeHandler.RaiseProgress((long)e.Progress, FirmwareUpgradeStatus.Upgrading, e.State.ToDescription()); }; @@ -2105,16 +2105,26 @@ namespace Tango.Integration.Operation } upgradeManager.PerformUpgrade(data).Wait(); - upgradeHandler.Total = zip.Entries.Sum(x => x.UncompressedSize); - Thread.Sleep(2000); + upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Waiting for the device..."); + Thread.Sleep(5000); + + upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Connecting..."); Adapter.Connect().Wait(); Connect().Wait(); + + upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Connected."); + Thread.Sleep(2000); + + upgradeHandler.RaiseProgress(100, FirmwareUpgradeStatus.Upgrading, "Waiting..."); + Thread.Sleep(2000); + Status = MachineStatuses.Upgrading; } if (FirmwareUpgradeMode.HasFlag(FirmwareUpgradeModes.TFP_PACKAGE)) { + upgradeHandler.Total = zip.Entries.Sum(x => x.UncompressedSize); uploadNext(); } else diff --git a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeStatus.cs b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeStatus.cs index cf9cb2364..72a892d04 100644 --- a/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeStatus.cs +++ b/Software/Visual_Studio/Tango.Integration/Upgrade/FirmwareUpgradeStatus.cs @@ -11,7 +11,7 @@ namespace Tango.Integration.Upgrade { [Description("Initializing...")] Initializing, - [Description("Upgrading Firmware...")] + [Description("Upgrading firmware...")] Upgrading, [Description("Uploading files...")] Uploading, -- cgit v1.3.1 From ccc6add5ea66565453283d7df0f6fbf2324b9264 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 18 Feb 2019 13:21:20 +0200 Subject: Refactored machine studio service. --- .../Authentication/AuthenticationLoginResult.cs | 1 + .../Authentication/LoginRequest.cs | 16 --- .../Authentication/LoginResponse.cs | 18 --- .../Tango.MachineStudio.Common.csproj | 31 +++-- .../Update/CheckForUpdatesRequest.cs | 15 --- .../Update/CheckForUpdatesResponse.cs | 21 ---- .../Update/DownloadLatestVersionRequest.cs | 14 --- .../Update/DownloadLatestVersionResponse.cs | 16 --- .../Update/IMachineStudioUpdateService.cs | 27 ----- .../Update/LatestVersionRequest.cs | 15 --- .../Update/LatestVersionResponse.cs | 15 --- .../Update/MachineStudioUpdateService.cs | 54 --------- .../Update/UpdateServiceHelper.cs | 29 ----- .../Update/UploadCompletedRequest.cs | 15 --- .../Update/UploadCompletedResponse.cs | 14 --- .../Update/UploadVersionRequest.cs | 21 ---- .../Update/UploadVersionResponse.cs | 17 --- .../Web/CheckForUpdatesRequest.cs | 15 +++ .../Web/CheckForUpdatesResponse.cs | 21 ++++ .../Web/DownloadLatestVersionRequest.cs | 14 +++ .../Web/DownloadLatestVersionResponse.cs | 16 +++ .../Web/IMachineStudioService.cs | 28 +++++ .../Web/LatestVersionRequest.cs | 15 +++ .../Web/LatestVersionResponse.cs | 15 +++ .../Tango.MachineStudio.Common/Web/LoginRequest.cs | 16 +++ .../Web/LoginResponse.cs | 18 +++ .../Web/MachineStudioService.cs | 60 ++++++++++ .../Web/UploadCompletedRequest.cs | 15 +++ .../Web/UploadCompletedResponse.cs | 14 +++ .../Web/UploadVersionRequest.cs | 17 +++ .../Web/UploadVersionResponse.cs | 17 +++ .../MainWindow.xaml | 2 +- .../MainWindowVM.cs | 4 +- .../DefaultAuthenticationProvider.cs | 5 +- .../Messages/ChangeVersionMessage.cs | 2 +- .../Messages/ForcedUpdateMessage.cs | 2 +- .../ViewModels/LoadingViewVM.cs | 2 +- .../ViewModels/MainViewVM.cs | 4 +- .../ViewModels/UpdateViewVM.cs | 7 +- .../Tango.MachineStudio.UI/Views/AboutView.xaml | 2 - .../Tango.Web/Authentication/TokensManager.cs | 23 +++- .../Controllers/MachineStudioController.cs | 133 +++++++++++++-------- .../Filters/MachineStudioLoginFilter.cs | 31 +++++ .../Tango.MachineService.csproj | 3 +- 44 files changed, 448 insertions(+), 392 deletions(-) delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UpdateServiceHelper.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs create mode 100644 Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/AuthenticationLoginResult.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/AuthenticationLoginResult.cs index 78f5365a5..dd18d75b2 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/AuthenticationLoginResult.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/AuthenticationLoginResult.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; +using Tango.MachineStudio.Common.Web; namespace Tango.MachineStudio.Common.Authentication { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs deleted file mode 100644 index 94fe7f5e2..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Authentication -{ - public class LoginRequest : WebRequestMessage - { - public String Version { get; set; } - public String Email { get; set; } - public String Password { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs deleted file mode 100644 index e1d9c615a..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Core; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Authentication -{ - public class LoginResponse : WebResponseMessage - { - public DataSource DataSource { get; set; } - public String Token { get; set; } - public bool VersionChangeRequired { get; set; } - public String RequiredVersion { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj index 87ccd8249..40d7da460 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj @@ -84,8 +84,8 @@ GlobalVersionInfo.cs - - + + @@ -130,19 +130,18 @@ - - - - - - - - - - - - - + + + + + + + + + + + + @@ -327,7 +326,7 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs deleted file mode 100644 index e31a7f59e..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class CheckForUpdatesRequest : WebRequestSecureMessage - { - public String Version { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs deleted file mode 100644 index 450236f79..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class CheckForUpdatesResponse : WebResponseMessage - { - public bool IsUpdateAvailable { get; set; } - - public String Version { get; set; } - - public String Comments { get; set; } - - public String BlobAddress { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs deleted file mode 100644 index 98aa9f1a4..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class DownloadLatestVersionRequest : WebRequestSecureMessage - { - - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs deleted file mode 100644 index f85999f3d..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class DownloadLatestVersionResponse : WebResponseMessage - { - public String Version { get; set; } - - public String BlobAddress { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs deleted file mode 100644 index 375506b90..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.ServiceModel; -using System.Text; -using System.Threading.Tasks; -using Tango.MachineStudio.Common.Update; -using Tango.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public interface IMachineStudioUpdateService - { - DeploymentSlot Environment { get; set; } - - Task CheckForUpdates(CheckForUpdatesRequest request); - - Task DownloadLatestVersion(DownloadLatestVersionRequest request); - - Task UploadVersion(UploadVersionRequest request); - - Task NotifyUploadCompleted(UploadCompletedRequest request); - - Task GetLatestVersion(LatestVersionRequest request); - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs deleted file mode 100644 index b4e7bd975..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class LatestVersionRequest : WebRequestMessage - { - - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs deleted file mode 100644 index b90cbf370..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class LatestVersionResponse : WebResponseMessage - { - public String Version { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs deleted file mode 100644 index 8fdd18abe..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Settings; -using Tango.Transport.Web; -using Tango.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class MachineStudioUpdateService : IMachineStudioUpdateService - { - private WebTransportClient _client; - - public DeploymentSlot Environment { get; set; } - - public MachineStudioUpdateService() - { - Environment = SettingsManager.Default.GetOrCreate().DeploymentSlot; - _client = new WebTransportClient(); - } - - public Task CheckForUpdates(CheckForUpdatesRequest request) - { - return _client.PostJson(GetAddress() + "CheckForUpdates", request); - } - - public Task UploadVersion(UploadVersionRequest request) - { - return _client.PostJson(GetAddress() + "UploadVersion", request); - } - - public Task NotifyUploadCompleted(UploadCompletedRequest request) - { - return _client.PostJson(GetAddress() + "NotifyUploadCompleted", request); - } - - public Task GetLatestVersion(LatestVersionRequest request) - { - return _client.PostJson(GetAddress() + "GetLatestVersion", request); - } - - public Task DownloadLatestVersion(DownloadLatestVersionRequest request) - { - return _client.PostJson(GetAddress() + "DownloadLatestVersion", request); - } - - private String GetAddress() - { - return Environment.ToAddress() + "/api/MachineStudio/"; - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UpdateServiceHelper.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UpdateServiceHelper.cs deleted file mode 100644 index 067e4470d..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UpdateServiceHelper.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.ServiceModel; -using System.Text; -using System.Threading.Tasks; -using Tango.Settings; - -namespace Tango.MachineStudio.Common.Update -{ - public static class UpdateServiceHelper - { - public static ChannelFactory GetUpdateServiceChannel() - { - BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); - binding.ReceiveTimeout = TimeSpan.FromSeconds(60); - binding.SendTimeout = TimeSpan.FromSeconds(60); - binding.MaxBufferPoolSize = 6553600; - binding.MaxBufferSize = 6553600; - binding.MaxReceivedMessageSize = 6553600; - binding.ReaderQuotas.MaxDepth = 6553600; - binding.ReaderQuotas.MaxStringContentLength = 6553600; - binding.ReaderQuotas.MaxArrayLength = 6553600; - binding.ReaderQuotas.MaxBytesPerRead = 6553600; - - return new ChannelFactory(binding, SettingsManager.Default.GetOrCreate().UpdateServiceAddress); - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs deleted file mode 100644 index d23d57351..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class UploadCompletedRequest : WebRequestSecureMessage - { - - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs deleted file mode 100644 index 89850e3e5..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class UploadCompletedResponse : WebResponseMessage - { - - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs deleted file mode 100644 index fedb586ba..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class UploadVersionRequest : WebRequestMessage - { - public String Email { get; set; } - - public String Password { get; set; } - - public String Version { get; set; } - - public String Comments { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs deleted file mode 100644 index 4d13fc6ad..000000000 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Tango.Transport.Web; - -namespace Tango.MachineStudio.Common.Update -{ - public class UploadVersionResponse : WebResponseMessage - { - public String Token { get; set; } - - public String BlobAddress { get; set; } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs new file mode 100644 index 000000000..4f9576f50 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class CheckForUpdatesRequest : WebRequestSecureMessage + { + public String Version { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs new file mode 100644 index 000000000..51608e6c4 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class CheckForUpdatesResponse : WebResponseMessage + { + public bool IsUpdateAvailable { get; set; } + + public String Version { get; set; } + + public String Comments { get; set; } + + public String BlobAddress { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs new file mode 100644 index 000000000..d63654726 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class DownloadLatestVersionRequest : WebRequestSecureMessage + { + + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs new file mode 100644 index 000000000..3209b9a2f --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class DownloadLatestVersionResponse : WebResponseMessage + { + public String Version { get; set; } + + public String BlobAddress { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs new file mode 100644 index 000000000..748df4644 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; +using System.Threading.Tasks; +using Tango.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public interface IMachineStudioService + { + DeploymentSlot Environment { get; set; } + + Task CheckForUpdates(CheckForUpdatesRequest request); + + Task DownloadLatestVersion(DownloadLatestVersionRequest request); + + Task UploadVersion(UploadVersionRequest request); + + Task NotifyUploadCompleted(UploadCompletedRequest request); + + Task GetLatestVersion(LatestVersionRequest request); + + Task Login(LoginRequest request); + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs new file mode 100644 index 000000000..59bb71db4 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class LatestVersionRequest : WebRequestMessage + { + + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs new file mode 100644 index 000000000..7d43128f1 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class LatestVersionResponse : WebResponseMessage + { + public String Version { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs new file mode 100644 index 000000000..577f5e208 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class LoginRequest : WebRequestMessage + { + public String Version { get; set; } + public String Email { get; set; } + public String Password { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs new file mode 100644 index 000000000..0379c458b --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class LoginResponse : WebResponseMessage + { + public DataSource DataSource { get; set; } + public String Token { get; set; } + public bool VersionChangeRequired { get; set; } + public String RequiredVersion { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs new file mode 100644 index 000000000..8b43146e1 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.MachineStudio.Common.Authentication; +using Tango.Settings; +using Tango.Transport.Web; +using Tango.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class MachineStudioService : IMachineStudioService + { + private WebTransportClient _client; + + public DeploymentSlot Environment { get; set; } + + public MachineStudioService() + { + Environment = SettingsManager.Default.GetOrCreate().DeploymentSlot; + _client = new WebTransportClient(); + } + + public Task CheckForUpdates(CheckForUpdatesRequest request) + { + return _client.PostJson(GetAddress() + "CheckForUpdates", request); + } + + public Task UploadVersion(UploadVersionRequest request) + { + return _client.PostJson(GetAddress() + "UploadVersion", request); + } + + public Task NotifyUploadCompleted(UploadCompletedRequest request) + { + return _client.PostJson(GetAddress() + "NotifyUploadCompleted", request); + } + + public Task GetLatestVersion(LatestVersionRequest request) + { + return _client.PostJson(GetAddress() + "GetLatestVersion", request); + } + + public Task DownloadLatestVersion(DownloadLatestVersionRequest request) + { + return _client.PostJson(GetAddress() + "DownloadLatestVersion", request); + } + + public Task Login(LoginRequest request) + { + return _client.PostJson(GetAddress() + "Login", request); + } + + private String GetAddress() + { + return Environment.ToAddress() + "/api/MachineStudio/"; + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs new file mode 100644 index 000000000..48f5b2a6e --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class UploadCompletedRequest : WebRequestSecureMessage + { + public String Token { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs new file mode 100644 index 000000000..a290cf642 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class UploadCompletedResponse : WebResponseMessage + { + + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs new file mode 100644 index 000000000..33577deb2 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class UploadVersionRequest : WebRequestSecureMessage + { + public String Version { get; set; } + + public String Comments { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs new file mode 100644 index 000000000..9fb3ab94d --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using Tango.Transport.Web; + +namespace Tango.MachineStudio.Common.Web +{ + public class UploadVersionResponse : WebResponseMessage + { + public String Token { get; set; } + + public String BlobAddress { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindow.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindow.xaml index a263c76a2..b860994fd 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindow.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindow.xaml @@ -80,7 +80,7 @@ - + diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindowVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindowVM.cs index f9f2af693..e62f29403 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindowVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindowVM.cs @@ -17,7 +17,7 @@ using Tango.Core.Helpers; using Tango.Core.IO; using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.Publish; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; using Tango.Settings; using Tango.SharedUI; using Tango.Transport.Web; @@ -106,7 +106,7 @@ namespace Tango.MachineStudio.Publisher.UI } catch (Exception ex) { - ShowError(ex.Message); + ShowError(ex.FlattenMessage()); } finally { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs index 9be938fb7..452b706df 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs @@ -15,6 +15,7 @@ using Tango.Settings; using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.StudioApplication; using Tango.Core.Helpers; +using Tango.MachineStudio.Common.Web; namespace Tango.MachineStudio.UI.Authentication { @@ -56,9 +57,9 @@ namespace Tango.MachineStudio.UI.Authentication { var settings = SettingsManager.Default.GetOrCreate(); + IMachineStudioService service = new MachineStudioService(); - IWebTransportClient service = new WebTransportClient(); - var response = service.PostJson(settings.GetMachineServiceAddress() + "/api/MachineStudio/Login", new LoginRequest() + var response = service.Login(new LoginRequest() { Email = email, diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ChangeVersionMessage.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ChangeVersionMessage.cs index fc616f359..a0fdec8ed 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ChangeVersionMessage.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ChangeVersionMessage.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.MachineStudio.Common.Authentication; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; namespace Tango.MachineStudio.UI.Messages { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ForcedUpdateMessage.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ForcedUpdateMessage.cs index 38bc82b6e..54b43c6d3 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ForcedUpdateMessage.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ForcedUpdateMessage.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; namespace Tango.MachineStudio.UI.Messages { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs index 283ea3637..e55d0534e 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs @@ -17,7 +17,7 @@ using Tango.MachineStudio.Common.EventLogging; using Tango.BL.Enumerations; using Tango.MachineStudio.UI.TFS; using Tango.MachineStudio.Common; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; using Tango.Core.DI; using Tango.Settings; using Tango.Core; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index 1d03dd389..64043e556 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -27,7 +27,7 @@ using Tango.MachineStudio.Common.Navigation; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.Speech; using Tango.MachineStudio.Common.StudioApplication; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; using Tango.MachineStudio.UI.StudioApplication; using Tango.MachineStudio.UI.SupervisingController; using Tango.MachineStudio.UI.TFS; @@ -357,7 +357,7 @@ namespace Tango.MachineStudio.UI.ViewModels { if (_authenticationProvider.CurrentUser != null) { - var client = new MachineStudioUpdateService(); + var client = new MachineStudioService(); CheckForUpdatesResponse response = client.CheckForUpdates(new CheckForUpdatesRequest() { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs index 63cff2242..8d4553e32 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs @@ -19,12 +19,13 @@ using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Navigation; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; using Tango.SharedUI; using Tango.MachineStudio.UI.Messages; using Tango.Settings; using Tango.MachineStudio.Common; using Tango.Transport.Web; +using Tango.MachineStudio.Common.Web; namespace Tango.MachineStudio.UI.ViewModels { @@ -168,7 +169,7 @@ namespace Tango.MachineStudio.UI.ViewModels Status = UpdateStatus.CheckingForUpdate; - var client = new MachineStudioUpdateService(); + var client = new MachineStudioService(); DownloadLatestVersionResponse response = await client.DownloadLatestVersion(new DownloadLatestVersionRequest() { @@ -215,7 +216,7 @@ namespace Tango.MachineStudio.UI.ViewModels { Thread.Sleep(2000); - var client = new MachineStudioUpdateService(); + var client = new MachineStudioService(); CheckForUpdatesResponse response = client.CheckForUpdates(new CheckForUpdatesRequest() { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml index 696cc051f..d9cb20d03 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml @@ -60,8 +60,6 @@ () - Allow BETA Updates: - diff --git a/Software/Visual_Studio/Tango.Web/Authentication/TokensManager.cs b/Software/Visual_Studio/Tango.Web/Authentication/TokensManager.cs index 20fc8ab50..4f23c9667 100644 --- a/Software/Visual_Studio/Tango.Web/Authentication/TokensManager.cs +++ b/Software/Visual_Studio/Tango.Web/Authentication/TokensManager.cs @@ -1,30 +1,41 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Authentication; using System.Text; using System.Threading.Tasks; namespace Tango.Web.Authentication { - public class TokensManager + public class TokensManager { - private List _tokens; + private Dictionary _tokens; public TokensManager() { - _tokens = new List(); + _tokens = new Dictionary(); } - public String CreateNew() + public String CreateNew(T userID) { String token = Guid.NewGuid().ToString(); - _tokens.Add(token); + _tokens.Add(token, userID); return token; } public bool Exists(String token) { - return _tokens.Contains(token); + return _tokens.ContainsKey(token); + } + + public T GetUserID(String token) + { + if (!_tokens.ContainsKey(token)) + { + throw new AuthenticationException("Invalid token."); + } + + return _tokens[token]; } } } diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs index 660b98576..b2e3aa150 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs +++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs @@ -14,35 +14,53 @@ using Tango.Core.Cryptography; using Tango.MachineService.Models; using Tango.MachineStudio.Common.Authentication; using System.Data.Entity; -using Tango.MachineStudio.Common.Update; +using Tango.MachineStudio.Common.Web; using Tango.Web.Controllers; using Tango.Web.Helpers; using Tango.Web.Storage; using Tango.Web.Authentication; using Tango.Web.ActiveDirectory; +using Tango.MachineService.Filters; namespace Tango.MachineService.Controllers { public class MachineStudioController : JsonController { - private static TokensManager _tokens_manager; private static List _pendingUploads; private ActiveDirectoryManager _ad_manager; + public static TokensManager TokensManager { get; set; } + + #region Constructors + + /// + /// Initializes the class. + /// static MachineStudioController() { - _tokens_manager = new TokensManager(); + TokensManager = new TokensManager(); _pendingUploads = new List(); } + /// + /// Initializes a new instance of the class. + /// public MachineStudioController() : base() { _ad_manager = new ActiveDirectoryManager(); } - #region Update + #endregion + + #region Actions + /// + /// Checks for updates. + /// + /// The request. + /// [HttpPost] + [MachineStudioLoginFilter] public CheckForUpdatesResponse CheckForUpdates(CheckForUpdatesRequest request) { LogManager.Log("Request received..."); @@ -51,41 +69,40 @@ namespace Tango.MachineService.Controllers using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { - if (_tokens_manager.Exists(request.AccessToken)) - { - var versions = db.MachineStudioVersions.ToList(); + var versions = db.MachineStudioVersions.ToList(); - MachineStudioVersion latestVersion = null; + MachineStudioVersion latestVersion = null; - latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); - Version currentVersion = Version.Parse(request.Version); + Version currentVersion = Version.Parse(request.Version); - String comments = String.Join(Environment.NewLine, versions.OrderBy(x => Version.Parse(x.Version)).Where(x => Version.Parse(x.Version) > currentVersion).Select(x => x.Comments)); + String comments = String.Join(Environment.NewLine, versions.OrderBy(x => Version.Parse(x.Version)).Where(x => Version.Parse(x.Version) > currentVersion).Select(x => x.Comments)); - if (latestVersion != null && Version.Parse(latestVersion.Version) > currentVersion) - { - var manager = new StorageManager(); - var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER); - var blob = container.GetBlockBlobReference(latestVersion.BlobName); + if (latestVersion != null && Version.Parse(latestVersion.Version) > currentVersion) + { + var manager = new StorageManager(); + var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER); + var blob = container.GetBlockBlobReference(latestVersion.BlobName); - response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60)); + response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60)); - response.IsUpdateAvailable = true; - response.Version = latestVersion.Version; - response.Comments = latestVersion.Comments; - } - } - else - { - throw new AuthenticationException("Invalid token."); + response.IsUpdateAvailable = true; + response.Version = latestVersion.Version; + response.Comments = latestVersion.Comments; } } return response; } + /// + /// Downloads the latest version. + /// + /// The request. + /// [HttpPost] + [MachineStudioLoginFilter] public DownloadLatestVersionResponse DownloadLatestVersion(DownloadLatestVersionRequest request) { LogManager.Log("Request received..."); @@ -94,32 +111,33 @@ namespace Tango.MachineService.Controllers using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { - if (_tokens_manager.Exists(request.AccessToken)) - { - var versions = db.MachineStudioVersions.ToList(); + var versions = db.MachineStudioVersions.ToList(); - MachineStudioVersion latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + MachineStudioVersion latestVersion = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); - if (latestVersion != null) - { - var manager = new StorageManager(); - var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER); - var blob = container.GetBlockBlobReference(latestVersion.BlobName); - - response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60)); - response.Version = latestVersion.Version; - } - } - else + if (latestVersion != null) { - throw new AuthenticationException("Invalid token."); + var manager = new StorageManager(); + var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER); + var blob = container.GetBlockBlobReference(latestVersion.BlobName); + + response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60)); + response.Version = latestVersion.Version; } } return response; } + /// + /// Uploads a version. + /// + /// The request. + /// + /// New version must be greater than latest version. + /// Invalid user credentials. [HttpPost] + [MachineStudioLoginFilter] public UploadVersionResponse UploadVersion(UploadVersionRequest request) { UploadVersionResponse response = new UploadVersionResponse(); @@ -132,7 +150,9 @@ namespace Tango.MachineService.Controllers db.UsersRoles.ToList(); db.RolesPermissions.ToList(); - var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password); + String userID = TokensManager.GetUserID(request.AccessToken); + + var user = db.Users.SingleOrDefault(x => x.Guid == userID); if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersions)) { @@ -173,10 +193,17 @@ namespace Tango.MachineService.Controllers return response; } + /// + /// Notifies about a version upload completion. + /// + /// The request. + /// + /// Invalid Token. [HttpPost] + [MachineStudioLoginFilter] public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request) { - MachineStudioPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.AccessToken); + MachineStudioPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token); if (upload != null) { @@ -203,6 +230,11 @@ namespace Tango.MachineService.Controllers } } + /// + /// Gets the latest version. + /// + /// The request. + /// [HttpPost] public LatestVersionResponse GetLatestVersion(LatestVersionRequest request) { @@ -213,8 +245,12 @@ namespace Tango.MachineService.Controllers } } - #endregion - + /// + /// Login to the service. + /// + /// The request. + /// + /// [HttpPost] public LoginResponse Login(LoginRequest request) { @@ -235,6 +271,8 @@ namespace Tango.MachineService.Controllers bool versionChangeRequired = false; String requiredVersion = null; + User user = null; + using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { db.Roles.ToList(); @@ -242,7 +280,7 @@ namespace Tango.MachineService.Controllers db.UsersRoles.ToList(); db.RolesPermissions.ToList(); - var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower()); + user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower()); IHashGenerator g = new BasicHashGenerator(); @@ -309,11 +347,12 @@ namespace Tango.MachineService.Controllers Password = request.Password, }, - Token = _tokens_manager.CreateNew(), + Token = TokensManager.CreateNew(user.Guid), VersionChangeRequired = versionChangeRequired, RequiredVersion = requiredVersion, }; } + #endregion } } diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs b/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs new file mode 100644 index 000000000..3c5798e82 --- /dev/null +++ b/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Security.Authentication; +using System.Web; +using System.Web.Http; +using System.Web.Http.Controllers; +using System.Web.Http.Filters; +using Tango.Transport.Web; + +namespace Tango.MachineService.Filters +{ + public class MachineStudioLoginFilter : ActionFilterAttribute + { + public override void OnActionExecuting(HttpActionContext actionContext) + { + var json = actionContext.Request.Content.ReadAsStringAsync().Result; + WebRequestSecureMessage msg = JsonConvert.DeserializeObject(json); + + if (!Controllers.MachineStudioController.TokensManager.Exists(msg.AccessToken)) + { + throw new HttpResponseException(actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new AuthenticationException("Invalid Token."))); + } + + base.OnActionExecuting(actionContext); + } + } +} \ No newline at end of file diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj index 048e051c5..ab3215f6b 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj +++ b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj @@ -275,6 +275,7 @@ + @@ -377,7 +378,7 @@ False - + -- cgit v1.3.1 From 556975ba30e4984167cf2094edf8119c11168783 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 18 Feb 2019 18:48:41 +0200 Subject: Machine Studio v4.0.7.0 --- .../Build/Shortcuts/Machine Studio.lnk | Bin 1516 -> 1532 bytes .../MachineStudioSettings.cs | 8 ++++++ .../Properties/AssemblyInfo.cs | 2 +- .../Tango.MachineStudio.UI/Views/AboutView.xaml | 6 ++--- .../Properties/PublishProfiles/Process.pubxml | 28 +++++++++++++++++++++ .../Tango.MachineService.csproj | 1 + 6 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 Software/Visual_Studio/Web/Tango.MachineService/Properties/PublishProfiles/Process.pubxml (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views') diff --git a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk index 9701ff7fc..4d317d343 100644 Binary files a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk and b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk differ diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs index b8d767c5e..f7c05c1a8 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs @@ -107,6 +107,14 @@ namespace Tango.MachineStudio.Common /// public bool ByPassEnvironmentVersionCheck { get; set; } + /// + /// Gets the machine service address. + /// + public String MachineServiceAddress + { + get { return GetMachineServiceAddress(); } + } + /// /// Gets the machine service address. /// diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs index 951b80ab4..bceaaf956 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs @@ -4,5 +4,5 @@ using System.Runtime.InteropServices; [assembly: System.Windows.ThemeInfo(System.Windows.ResourceDictionaryLocation.None, System.Windows.ResourceDictionaryLocation.SourceAssembly)] [assembly: AssemblyTitle("Tango - Machine Studio")] -[assembly: AssemblyVersion("4.0.6.0")] +[assembly: AssemblyVersion("4.0.7.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml index d9cb20d03..640c3c1df 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml @@ -50,12 +50,12 @@ v Build Date: - Environment Mode: + Data Mode: - Environment Slot: + Environment: Machine Service: - + Data Source: () diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Properties/PublishProfiles/Process.pubxml b/Software/Visual_Studio/Web/Tango.MachineService/Properties/PublishProfiles/Process.pubxml new file mode 100644 index 000000000..a668d8243 --- /dev/null +++ b/Software/Visual_Studio/Web/Tango.MachineService/Properties/PublishProfiles/Process.pubxml @@ -0,0 +1,28 @@ + + + + + MSDeploy + /subscriptions/10c8aa60-3b15-4e0d-b412-6aeef90e5e91/resourceGroups/Tango/providers/Microsoft.Web/sites/machineservice/slots/MachineService-PROCESS + Tango + AzureWebSite + Release + Any CPU + http://machineservice-machineservice-process.azurewebsites.net + True + False + machineservice-machineservice-process.scm.azurewebsites.net:443 + machineservice__MachineService-PROCESS + + True + False + WMSVC + True + $machineservice__MachineService-PROCESS + <_SavePWD>True + <_DestinationType>AzureWebSite + + \ No newline at end of file diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj index 44351869b..038849c72 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj +++ b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj @@ -348,6 +348,7 @@ + -- cgit v1.3.1