public void ThenGenerateFileNameWithCombinedPattern()
        {
            var attachment  = new Attachment("earth.jpg");
            var userMessage = new MessageInfo("messageId");

            var payloadFileName = PayloadFileNameFactory.CreateFileName("{MessageId}_{AttachmentId}", attachment, userMessage);

            Assert.Equal($"{userMessage.MessageId}_{attachment.Id}", payloadFileName);
        }
        public void ThenGenerateFileNameWithMessageIdPattern()
        {
            string messageId = "someMessageId";

            var m = new MessageInfo(messageId);

            var payloadFileName = PayloadFileNameFactory.CreateFileName("{messageId}", null, m);

            Assert.Equal(messageId, payloadFileName);
        }
        public void DefaultPatternIsAttachmentIdPattern()
        {
            string payloadId   = "earth.jpg";
            var    attachment  = new Attachment(payloadId);
            var    userMessage = new MessageInfo("messageId");

            var payloadFileName = PayloadFileNameFactory.CreateFileName(null, attachment, userMessage);

            Assert.Equal(payloadId, payloadFileName);
        }
        public void ThenGenerateFileNameWithAttachmentIdPattern()
        {
            string payloadId = "earth.jpg";

            var attachment = new Attachment(payloadId);

            var payloadFileName = PayloadFileNameFactory.CreateFileName("{ATTACHMENTID}", attachment, null);

            Assert.Equal(payloadId, payloadFileName);
        }
        public void ThenAppendAttachmentIdIfPatternContainsNoMacro()
        {
            var attachment  = new Attachment("earth.jpg");
            var userMessage = new MessageInfo("messageId");

            var pattern = "abc_";

            var payloadFileName = PayloadFileNameFactory.CreateFileName(pattern, attachment, userMessage);

            Assert.Equal($"abc_{attachment.Id}", payloadFileName);
        }
        private string AssembleFileDownloadUrlFor(Attachment attachment, MessageInfo referringUserMessage)
        {
            try
            {
                string extension     = MimeTypeRepository.Instance.GetExtensionFromMimeType(attachment.ContentType);
                string fileName      = PayloadFileNameFactory.CreateFileName(NamePattern, attachment, referringUserMessage);
                string validFileName = FilenameUtils.EnsureValidFilename($"{fileName}{extension}");

                return(Path.Combine(Location, validFileName));
            }
            catch (Exception ex)
            {
                Logger.Error($"An fatal error occured while determining the file path: {ex}");
                return(null);
            }
        }