aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs')
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs184
1 files changed, 71 insertions, 113 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs
index 953399530..b68da06a7 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs
@@ -14,10 +14,8 @@ using Tango.PPC.Common.Update;
namespace Tango.MachineService.Controllers
{
- public class VersionUpdateController : ApiController
+ public class VersionUpdateController : JsonController
{
- private LogManager LogManager = LogManager.Default;
-
private class PendingUpload
{
public String Token { get; set; }
@@ -43,158 +41,118 @@ namespace Tango.MachineService.Controllers
[HttpPost]
public LatestVersionResponse GetLatestVersion(LatestVersionRequest request)
{
- try
+ LatestVersionResponse response = new LatestVersionResponse();
+
+ using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- LatestVersionResponse response = new LatestVersionResponse();
+ var versions = db.TangoVersions.Where(x => x.MachineVersionGuid == request.MachineVersionGuid).ToList();
- using (ObservablesContext db = ObservablesContextHelper.CreateContext())
+ if (versions.Count > 0)
{
- var versions = db.TangoVersions.Where(x => x.MachineVersionGuid == request.MachineVersionGuid).ToList();
-
- if (versions.Count > 0)
- {
- response.Version = db.TangoVersions.Where(x => x.MachineVersionGuid == request.MachineVersionGuid).ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault().Version;
- }
- else
- {
- return new LatestVersionResponse()
- {
- Version = "0.0.0.0"
- };
- }
+ response.Version = db.TangoVersions.Where(x => x.MachineVersionGuid == request.MachineVersionGuid).ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault().Version;
+ }
+ else
+ {
+ throw new ArgumentException("The specified machine version was not found!");
}
-
- return response;
- }
- catch (Exception ex)
- {
- throw CreateError(ex, HttpStatusCode.InternalServerError);
}
+
+ return response;
}
[HttpPost]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
- try
+ UploadVersionResponse response = new UploadVersionResponse();
+
+ using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- UploadVersionResponse response = new UploadVersionResponse();
+ //Load relations first...
+ db.Roles.ToList();
+ db.Permissions.ToList();
+ db.UsersRoles.ToList();
+ db.RolesPermissions.ToList();
- using (ObservablesContext db = ObservablesContextHelper.CreateContext())
+ var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password);
+
+ if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersion))
{
- //Load relation first...
- db.Roles.ToList();
- db.Permissions.ToList();
- db.UsersRoles.ToList();
- db.RolesPermissions.ToList();
+ var versions = db.TangoVersions.ToList().Where(x => x.MachineVersionGuid == request.MachineVersionGuid).OrderByDescending(x => Version.Parse(x.Version)).ToList();
- var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password);
+ TangoVersion latestVersion = new TangoVersion();
+ latestVersion.Version = "0.0.0.0";
- if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersion))
+ if (versions.Count > 0)
{
- var versions = db.TangoVersions.ToList().Where(x => x.MachineVersionGuid == request.MachineVersionGuid).OrderByDescending(x => Version.Parse(x.Version)).ToList();
-
- TangoVersion latestVersion = new TangoVersion();
- latestVersion.Version = "0.0.0.0";
-
- if (versions.Count > 0)
- {
- latestVersion = versions.FirstOrDefault();
- }
+ latestVersion = versions.FirstOrDefault();
+ }
- Version currentVersion = Version.Parse(request.Version);
+ Version currentVersion = Version.Parse(request.Version);
- if (currentVersion > Version.Parse(latestVersion.Version))
- {
- String newVersionFileName = "Tango Version" + " " + currentVersion.ToString() + ".zip";
+ if (currentVersion > Version.Parse(latestVersion.Version))
+ {
+ String newVersionFileName = "Tango Version" + " " + currentVersion.ToString() + ".zip";
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetTangoVersionsContainer(client);
- var blob = StorageHelper.CreateEmptyBlob(container, newVersionFileName);
+ var client = StorageHelper.GetStorageBlobClient();
+ var container = StorageHelper.GetTangoVersionsContainer(client);
+ var blob = StorageHelper.CreateEmptyBlob(container, newVersionFileName);
- response.Token = Guid.NewGuid().ToString();
- response.BlobAddress = StorageHelper.GenerateBlobWriteSignature(blob, TimeSpan.FromMinutes(30));
+ response.Token = Guid.NewGuid().ToString();
+ response.BlobAddress = StorageHelper.GenerateBlobWriteSignature(blob, TimeSpan.FromMinutes(30));
- _pendingUploads.Add(new PendingUpload()
- {
- UserGuid = user.Guid,
- Comments = request.Comments,
- Token = response.Token,
- Version = request.Version,
- BlobName = blob.Name,
- MachineVersionGuid = request.MachineVersionGuid,
- });
- }
- else
+ _pendingUploads.Add(new PendingUpload()
{
- throw CreateError(new ArgumentException("New version must be greater than latest version."), HttpStatusCode.BadRequest);
- }
+ UserGuid = user.Guid,
+ Comments = request.Comments,
+ Token = response.Token,
+ Version = request.Version,
+ BlobName = blob.Name,
+ MachineVersionGuid = request.MachineVersionGuid,
+ });
}
else
{
- throw CreateError(new AuthenticationException("Invalid user credentials."), HttpStatusCode.Unauthorized);
+ throw new ArgumentException("New version must be greater than latest version.");
}
}
-
- return response;
- }
- catch (HttpResponseException ex)
- {
- throw ex;
- }
- catch (Exception ex)
- {
- LogManager.Log(ex);
- throw CreateError(ex, HttpStatusCode.InternalServerError);
+ else
+ {
+ throw new AuthenticationException("Invalid user credentials.");
+ }
}
+
+ return response;
}
[HttpPost]
public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request)
{
- try
+ PendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
+
+ if (upload != null)
{
- PendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
+ _pendingUploads.RemoveAll(x => x.Token == upload.Token);
- if (upload != null)
+ using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- _pendingUploads.RemoveAll(x => x.Token == upload.Token);
-
- using (ObservablesContext db = ObservablesContextHelper.CreateContext())
+ db.TangoVersions.Add(new TangoVersion()
{
- db.TangoVersions.Add(new TangoVersion()
- {
- Comments = upload.Comments,
- BlobName = upload.BlobName,
- UserGuid = upload.UserGuid,
- Version = upload.Version,
- MachineVersionGuid = upload.MachineVersionGuid
- });
-
- db.SaveChanges();
- }
+ Comments = upload.Comments,
+ BlobName = upload.BlobName,
+ UserGuid = upload.UserGuid,
+ Version = upload.Version,
+ MachineVersionGuid = upload.MachineVersionGuid
+ });
- return new UploadCompletedResponse();
- }
- else
- {
- throw CreateError(new AuthenticationException("Invalid Token."), HttpStatusCode.Unauthorized);
+ db.SaveChanges();
}
+
+ return new UploadCompletedResponse();
}
- catch (HttpRequestException ex)
- {
- throw ex;
- }
- catch (Exception ex)
+ else
{
- LogManager.Log(ex);
- throw CreateError(ex, HttpStatusCode.InternalServerError);
+ throw new AuthenticationException("Invalid upload token.");
}
}
-
- private Exception CreateError(Exception ex, HttpStatusCode code)
- {
- LogManager.Log(ex);
- return new HttpResponseException(Request.CreateErrorResponse(code, ex.Message));
- }
}
}