コード例 #1
0
        public async Task Handle(FileUploadedEvent message)
        {
            try
            {
                Log.Logger.Information("Message received in SendEmailConfirmingUpload: {@message}", message);

                var body = _mailMessageService.GetTemplateBasedMailBody("ConfirmationMailTemplate.html",
                                                                        message.DataFolder, "*.*", message.Email);
                var httpStatusCode = _mailSender.SendMailAsync(
                    message.Email,
                    _appSettings.CcAddress,
                    _appSettings.SenderAddress,
                    _appSettings.SubjectConfirmation + " " + message.Id,
                    body,
                    new string[] { })
                                     .Result;

                Log.Logger.Information($"Result of mail sending: {httpStatusCode}");

                await _bus.Bus.PublishAsync(Mapper.Map <FileReadyForProcessingEvent>(message))
                .ConfigureAwait(false);
            }
            catch (Exception e)
            {
                Log.Logger.Error(e, "Error during email confirmation sending");
                throw;
            }
        }
コード例 #2
0
        public async Task FragmentUploadedFile(
            [RabbitMQTrigger(SubscriptionName.Analyzer, ConnectionStringSetting = "RabbitMQ:ConnectionString")]
            FileUploadedEvent message,
            [RabbitMQ(QueueName = QueueName.Tokenizer, ConnectionStringSetting = "RabbitMQ:ConnectionString")]
            IAsyncCollector <FileFragmentedEvent> rabbitCollector,
            ILogger logger)
        {
            logger.LogInformation($"Start fragmenting message: {message.UploadId}");

            var command  = GenerateCommand(message);
            var messages = await _mediator.Send(command);

            await Task.WhenAll(messages.Select(m => rabbitCollector.AddAsync(m)));
        }
コード例 #3
0
        public ActionResult Post(UploadModel uploadModel)
        {
            if (uploadModel == null)
            {
                return(Error(new UploadErrorModel {
                    Errors = new string[] { "uploadmodel is null" }
                }));
            }

            //if (!ModelState.IsValid)
            //{
            //    var enumerable = ModelState.Select(x => x.Value.Errors.First().ErrorMessage);
            //    return Error(new UploadErrorModel{Errors =  enumerable});
            //}

            if (Request.Files.Count == 0)
            {
                return(Error(new UploadErrorModel {
                    Errors = new[] { "At least one file must be uploaded!" }
                }));
            }

            var guid = Guid.NewGuid();

            Log.Logger.Information("Received request to upload: {uploadId}", guid);

            var uploadDir  = _appSettings.UploadDir;
            var dataFolder = Path.Combine(uploadDir, guid.ToString());

            Directory.CreateDirectory(dataFolder);

            var fileNames = new List <string>();

            for (var i = 0; i < Request.Files.Count; i++)
            {
                if (Request.Files[i].ContentLength == 0)
                {
                    continue;
                }

                var filename = Path.GetFileName(Request.Files[i].FileName);
                Request.Files[i].SaveAs(Path.Combine(dataFolder, filename));
                fileNames.Add(filename);
            }

            foreach (var uploadValidator in _uploadValidators)
            {
                var validationResult = uploadValidator.Validate(uploadModel, dataFolder, fileNames);
                if (validationResult != null)
                {
                    return(Error(new UploadErrorModel {
                        Errors = new[] { validationResult.ErrorMessage }
                    }));
                }
            }

            Log.Logger.Information("Done writing and validating the following uploaded files: {uploadedFiles}", fileNames.ToArray());

            var fileUploadedEvent = new FileUploadedEvent
            {
                FileNames   = fileNames.ToArray(),
                Email       = uploadModel.Email,
                Description = uploadModel.Description,
                Id          = guid,
                DataFolder  = dataFolder,
                Allergene   = uploadModel.Allergene
            };

            _bus.Publish(fileUploadedEvent);
            Log.Logger.Information("Message broadcasted that files were uploaded: {@message}", fileUploadedEvent);

            return(RedirectToAction("Thanks", "Home"));
        }
コード例 #4
0
 private IRequest <IEnumerable <FileFragmentedEvent> > GenerateCommand(FileUploadedEvent message) =>
 message.Extension switch
 {