public HttpResponseMessage Image([FromUri] string id) { long indiagramId; if (!long.TryParse(id, out indiagramId)) { return Request.CreateBadRequestResponse(); } Device device = RequestContext.GetDevice(); using (IDatabaseService database = new DatabaseService()) { IndiagramForDevice resultIndiagram = database.GetIndiagram(device, indiagramId); if (resultIndiagram == null) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Indiagram not found"); } if (string.IsNullOrWhiteSpace(resultIndiagram.ImageHash)) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No image file"); } IStorageService storageService = new StorageService(); byte[] content = storageService.DownloadImage(resultIndiagram.Id, resultIndiagram.Version); if (content == null) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Error while downloading file"); } return Request.CreateGoodReponse(new FileDownloadResponse { FileName = resultIndiagram.ImageFile, Content = content }); } }
public HttpResponseMessage Indiagram([FromUri] string id, [FromUri] string versionNumber) { long indiagramId; long version; Device device = RequestContext.GetDevice(); if (!long.TryParse(id, out indiagramId) || !long.TryParse(versionNumber, out version)) { return Request.CreateBadRequestResponse(); } using (IDatabaseService database = new DatabaseService()) { if (!database.HasIndiagramVersion(device.UserId, version) || database.IsVersionOpen(device.UserId, version)) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Version not found"); } IndiagramForDevice resultIndiagram = database.GetIndiagram(device, indiagramId, version); if (resultIndiagram == null) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Indiagram not found"); } return Request.CreateGoodReponse(ToResponse(resultIndiagram)); } }
public HttpResponseMessage Indiagram([FromUri] string id) { long indiagramId; if (!long.TryParse(id, out indiagramId)) { return Request.CreateBadRequestResponse(); } Device device = RequestContext.GetDevice(); using (IDatabaseService database = new DatabaseService()) { IndiagramForDevice resultIndiagram = database.GetIndiagram(device, indiagramId); if (resultIndiagram == null) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Indiagram not found"); } return Request.CreateGoodReponse(ToResponse(resultIndiagram)); } }