aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-02-18 13:21:20 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-02-18 13:21:20 +0200
commitccc6add5ea66565453283d7df0f6fbf2324b9264 (patch)
tree99d7693a0022043775644ebd0d03436bec9eb34a /Software/Visual_Studio
parent8c203b26d50818a1b16b2a7ec48eca7b082653f4 (diff)
downloadTango-ccc6add5ea66565453283d7df0f6fbf2324b9264.tar.gz
Tango-ccc6add5ea66565453283d7df0f6fbf2324b9264.zip
Refactored machine studio service.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/AuthenticationLoginResult.cs1
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj31
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UpdateServiceHelper.cs29
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs)7
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs)12
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs)4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs)8
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs (renamed from Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs)2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindow.xaml2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher.UI/MainWindowVM.cs4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ChangeVersionMessage.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Messages/ForcedUpdateMessage.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs7
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml2
-rw-r--r--Software/Visual_Studio/Tango.Web/Authentication/TokensManager.cs23
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs133
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs31
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj3
30 files changed, 194 insertions, 138 deletions
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/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 @@
<Link>GlobalVersionInfo.cs</Link>
</Compile>
<Compile Include="Authentication\AuthenticationLoginResult.cs" />
- <Compile Include="Authentication\LoginRequest.cs" />
- <Compile Include="Authentication\LoginResponse.cs" />
+ <Compile Include="Web\LoginRequest.cs" />
+ <Compile Include="Web\LoginResponse.cs" />
<Compile Include="AutoComplete\MachinesProvider.cs" />
<Compile Include="Automation\Developer.cs" />
<Compile Include="Automation\UI.cs" />
@@ -130,19 +130,18 @@
<Compile Include="StudioModuleBase.cs" />
<Compile Include="StudioViewModel.cs" />
<Compile Include="Threading\IDispatcherProvider.cs" />
- <Compile Include="Update\DownloadLatestVersionResponse.cs" />
- <Compile Include="Update\DownloadLatestVersionRequest.cs" />
- <Compile Include="Update\CheckForUpdatesResponse.cs" />
- <Compile Include="Update\CheckForUpdatesRequest.cs" />
- <Compile Include="Update\IMachineStudioUpdateService.cs" />
- <Compile Include="Update\LatestVersionRequest.cs" />
- <Compile Include="Update\LatestVersionResponse.cs" />
- <Compile Include="Update\MachineStudioUpdateService.cs" />
- <None Include="Update\UpdateServiceHelper.cs" />
- <Compile Include="Update\UploadCompletedRequest.cs" />
- <Compile Include="Update\UploadCompletedResponse.cs" />
- <Compile Include="Update\UploadVersionRequest.cs" />
- <Compile Include="Update\UploadVersionResponse.cs" />
+ <Compile Include="Web\DownloadLatestVersionResponse.cs" />
+ <Compile Include="Web\DownloadLatestVersionRequest.cs" />
+ <Compile Include="Web\CheckForUpdatesResponse.cs" />
+ <Compile Include="Web\CheckForUpdatesRequest.cs" />
+ <Compile Include="Web\IMachineStudioService.cs" />
+ <Compile Include="Web\LatestVersionRequest.cs" />
+ <Compile Include="Web\LatestVersionResponse.cs" />
+ <Compile Include="Web\MachineStudioService.cs" />
+ <Compile Include="Web\UploadCompletedRequest.cs" />
+ <Compile Include="Web\UploadCompletedResponse.cs" />
+ <Compile Include="Web\UploadVersionRequest.cs" />
+ <Compile Include="Web\UploadVersionResponse.cs" />
<Compile Include="ValidationRules\Required.cs" />
<Compile Include="Video\DefaultVideoCaptureProvider.cs" />
<Compile Include="Video\IVideoCaptureProvider.cs" />
@@ -327,7 +326,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
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<IMachineStudioUpdateService> 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<IMachineStudioUpdateService>(binding, SettingsManager.Default.GetOrCreate<MachineStudioSettings>().UpdateServiceAddress);
- }
- }
-}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs
index e31a7f59e..4f9576f50 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesRequest.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class CheckForUpdatesRequest : WebRequestSecureMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs
index 450236f79..51608e6c4 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/CheckForUpdatesResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/CheckForUpdatesResponse.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class CheckForUpdatesResponse : WebResponseMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs
index 98aa9f1a4..d63654726 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionRequest.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
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/Web/DownloadLatestVersionResponse.cs
index f85999f3d..3209b9a2f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/DownloadLatestVersionResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/DownloadLatestVersionResponse.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class DownloadLatestVersionResponse : WebResponseMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs
index 375506b90..748df4644 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/IMachineStudioUpdateService.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/IMachineStudioService.cs
@@ -5,12 +5,11 @@ 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
+namespace Tango.MachineStudio.Common.Web
{
- public interface IMachineStudioUpdateService
+ public interface IMachineStudioService
{
DeploymentSlot Environment { get; set; }
@@ -23,5 +22,7 @@ namespace Tango.MachineStudio.Common.Update
Task<UploadCompletedResponse> NotifyUploadCompleted(UploadCompletedRequest request);
Task<LatestVersionResponse> GetLatestVersion(LatestVersionRequest request);
+
+ Task<LoginResponse> Login(LoginRequest request);
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs
index b4e7bd975..59bb71db4 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionRequest.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
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/Web/LatestVersionResponse.cs
index b90cbf370..7d43128f1 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/LatestVersionResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LatestVersionResponse.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class LatestVersionResponse : WebResponseMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs
index 94fe7f5e2..577f5e208 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginRequest.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Authentication
+namespace Tango.MachineStudio.Common.Web
{
public class LoginRequest : WebRequestMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs
index e1d9c615a..0379c458b 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Authentication/LoginResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/LoginResponse.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Tango.Core;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Authentication
+namespace Tango.MachineStudio.Common.Web
{
public class LoginResponse : WebResponseMessage
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs
index 8fdd18abe..8b43146e1 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/MachineStudioUpdateService.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/MachineStudioService.cs
@@ -3,19 +3,20 @@ 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.Update
+namespace Tango.MachineStudio.Common.Web
{
- public class MachineStudioUpdateService : IMachineStudioUpdateService
+ public class MachineStudioService : IMachineStudioService
{
private WebTransportClient _client;
public DeploymentSlot Environment { get; set; }
- public MachineStudioUpdateService()
+ public MachineStudioService()
{
Environment = SettingsManager.Default.GetOrCreate<MachineStudioSettings>().DeploymentSlot;
_client = new WebTransportClient();
@@ -46,6 +47,11 @@ namespace Tango.MachineStudio.Common.Update
return _client.PostJson<DownloadLatestVersionRequest, DownloadLatestVersionResponse>(GetAddress() + "DownloadLatestVersion", request);
}
+ public Task<LoginResponse> Login(LoginRequest request)
+ {
+ return _client.PostJson<LoginRequest, LoginResponse>(GetAddress() + "Login", request);
+ }
+
private String GetAddress()
{
return Environment.ToAddress() + "/api/MachineStudio/";
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs
index d23d57351..48f5b2a6e 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedRequest.cs
@@ -6,10 +6,10 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class UploadCompletedRequest : WebRequestSecureMessage
{
-
+ public String Token { get; set; }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs
index 89850e3e5..a290cf642 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadCompletedResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadCompletedResponse.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
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/Web/UploadVersionRequest.cs
index fedb586ba..33577deb2 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionRequest.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionRequest.cs
@@ -6,14 +6,10 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
- public class UploadVersionRequest : WebRequestMessage
+ public class UploadVersionRequest : WebRequestSecureMessage
{
- 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/Web/UploadVersionResponse.cs
index 4d13fc6ad..9fb3ab94d 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Update/UploadVersionResponse.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Web/UploadVersionResponse.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Transport.Web;
-namespace Tango.MachineStudio.Common.Update
+namespace Tango.MachineStudio.Common.Web
{
public class UploadVersionResponse : WebResponseMessage
{
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 @@
<StackPanel HorizontalAlignment="Left">
<TextBlock Text="{Binding PublishArgs.Message}" Foreground="Gray"></TextBlock>
- <ProgressBar Width="500" Height="10" Margin="0 5 0 0" Maximum="{Binding PublishArgs.Total}" Value="{Binding PublishArgs.Message}" Foreground="#0288D1"></ProgressBar>
+ <ProgressBar Width="500" Height="10" Margin="0 5 0 0" Maximum="{Binding PublishArgs.Total}" Value="{Binding PublishArgs.Progress}" Foreground="#0288D1"></ProgressBar>
</StackPanel>
</DockPanel>
</Grid>
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<MachineStudioSettings>();
+ IMachineStudioService service = new MachineStudioService();
- IWebTransportClient service = new WebTransportClient();
- var response = service.PostJson<LoginRequest, LoginResponse>(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 @@
<TextBlock><Run Text="{Binding DataSource.Address,Mode=OneWay}"></Run>
<Run>(</Run><Run Foreground="Gray" Text="{Binding DataSource.Catalog,Mode=OneWay}"></Run><Run>)</Run>
</TextBlock>
- <TextBlock FontWeight="SemiBold">Allow BETA Updates:</TextBlock>
- <ToggleButton IsChecked="{Binding MachineStudioSettings.AcceptBetaRelease,Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Bottom"></ToggleButton>
</controls:TableGrid>
<DockPanel Margin="0 0 0 0">
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<T>
{
- private List<String> _tokens;
+ private Dictionary<String, T> _tokens;
public TokensManager()
{
- _tokens = new List<string>();
+ _tokens = new Dictionary<String, T>();
}
- 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<MachineStudioPendingUpload> _pendingUploads;
private ActiveDirectoryManager _ad_manager;
+ public static TokensManager<String> TokensManager { get; set; }
+
+ #region Constructors
+
+ /// <summary>
+ /// Initializes the <see cref="MachineStudioController"/> class.
+ /// </summary>
static MachineStudioController()
{
- _tokens_manager = new TokensManager();
+ TokensManager = new TokensManager<string>();
_pendingUploads = new List<MachineStudioPendingUpload>();
}
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MachineStudioController"/> class.
+ /// </summary>
public MachineStudioController() : base()
{
_ad_manager = new ActiveDirectoryManager();
}
- #region Update
+ #endregion
+
+ #region Actions
+ /// <summary>
+ /// Checks for updates.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
[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;
}
+ /// <summary>
+ /// Downloads the latest version.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
[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;
}
+ /// <summary>
+ /// Uploads a version.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
+ /// <exception cref="System.ArgumentException">New version must be greater than latest version.</exception>
+ /// <exception cref="AuthenticationException">Invalid user credentials.</exception>
[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;
}
+ /// <summary>
+ /// Notifies about a version upload completion.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
+ /// <exception cref="System.ArgumentException">Invalid Token.</exception>
[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
}
}
+ /// <summary>
+ /// Gets the latest version.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
[HttpPost]
public LatestVersionResponse GetLatestVersion(LatestVersionRequest request)
{
@@ -213,8 +245,12 @@ namespace Tango.MachineService.Controllers
}
}
- #endregion
-
+ /// <summary>
+ /// Login to the service.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ /// <returns></returns>
+ /// <exception cref="AuthenticationException"></exception>
[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<WebRequestSecureMessage>(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 @@
</Compile>
<Compile Include="App_Start\BundleConfig.cs" />
<Compile Include="App_Start\FilterConfig.cs" />
+ <Compile Include="Filters\MachineStudioLoginFilter.cs" />
<Compile Include="MachineServiceConfig.cs" />
<Compile Include="Controllers\MachineStudioController.cs" />
<Compile Include="Models\MachineStudioPendingUpload.cs" />
@@ -377,7 +378,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">