public async Task <UploadImageResult> UploadImage(MemoryStream memoryStream, Guid mapId) { var image = new Image(); using (var md5 = MD5.Create()) { image.ImageKey = BitConverter.ToString(md5.ComputeHash(memoryStream)).Replace("-", "").ToLower(); } memoryStream.Position = 0; image.Location = await _storageAdapter.UploadFile($"{image.Id}.jpg", memoryStream, _storageContainerName); if (string.IsNullOrEmpty(image.Location)) { image.Status = ImageStatus.Errored; await _imagesRepository.InsertImage(image); return(UploadFailureResult()); } if (!await _imagesRepository.InsertImage(image)) { return(UploadFailureResult()); } image.Location = await _storageAdapter.GetFileUriWithKey($"{image.Id}.jpg", _storageContainerName); if (string.IsNullOrEmpty(image.Location)) { await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.Errored); return(UploadFailureResult()); } if (!await _queueAdapter.SendMessage(new ImageProcessRequest(image, mapId), "single-image")) { await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.Errored); return(UploadFailureResult()); } if (!await _imagesRepository.UpdateImageStatus(image.Id, ImageStatus.AwaitingProcessing)) { return(UploadFailureResult()); } return(UploadSuccessResult(image)); }
public async Task <WorkerClientVersion> UpdateWorkerClient(byte[] clientData) { var memoryStream = new MemoryStream(clientData); var clientUpdate = new WorkerClientVersion(int.Parse((await _workerVersionsRepository.GetLatestWorkerClient())?.Version ?? "0") + 1); using (var md5 = MD5.Create()) clientUpdate.Hash = BitConverter.ToString(md5.ComputeHash(memoryStream)).Replace("-", "").ToLower(); memoryStream.Position = 0; clientUpdate.Location = await _fileStorageAdapter.UploadFile($"WorkerClient_v{clientUpdate.Version}.zip", memoryStream, _storageContainerName); if (string.IsNullOrEmpty(clientUpdate.Location)) { return(null); } await _workerVersionsRepository.InsertWorkerClientVersion(clientUpdate); return(clientUpdate); }