示例#1
0
        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);
        }