diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-11-18 12:49:31 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-11-18 12:49:31 +0200 |
| commit | 2cc2bae70e86ff18d05a3579407b08e305b9053d (patch) | |
| tree | 2c2b1abd5bc7c184da99d9c5ed3fb8a0fa054c73 /Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs | |
| parent | 7fbf2f7cf8e2b52d83909b12658c30209f81b2bd (diff) | |
| download | Tango-2cc2bae70e86ff18d05a3579407b08e305b9053d.tar.gz Tango-2cc2bae70e86ff18d05a3579407b08e305b9053d.zip | |
Working on web services...
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs')
| -rw-r--r-- | Software/Visual_Studio/Web/Tango.MachineService/Controllers/VersionUpdateController.cs | 184 |
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)); - } } } |
