Exemplo n.º 1
0
        /// <summary>
        /// Writes to file async process.
        /// </summary>
        /// <param name="id">The identifier of message.</param>
        /// <param name="file">The file where write message.</param>
        /// <param name="content">The content of message.</param>
        /// <returns>Completed task.</returns>
        private static Task WriteToFileProcess(UniqueId id, string file, MimeKit.MimeMessage content)
        {
            return(Task.Run(async() =>
            {
                using (StreamWriter sw = new StreamWriter(File.Create(file)))
                {
                    var emailDto = new EmailDto
                    {
                        Subject = content.Subject,
                        From = content.From.ToString(),
                        MessageId = (int)id.Id,
                        Body = content.HtmlBody
                    };

                    await Task.Run(() => { EmailDtoFileWorker.WriteEmailDto(sw, emailDto); });
                }
            }));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the parsing task.
        /// </summary>
        public void Execute()
        {
            IContainer       container       = AutofacConfig.Container;
            IArticlesManager articlesManager = container.Resolve <IArticlesManager>();

            string pathToFiles = container.Resolve <IDirectoryDowloadConfiguration>().Directory;

            // Get downloaded emails.
            var files = Directory.GetFiles(pathToFiles, "*.*", SearchOption.AllDirectories);

            // Read emails and write content to DB.
            foreach (var file in files)
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    EmailDto emailDto = EmailDtoFileWorker.GetEmailDto(sr);

                    try
                    {
                        // Parse email from Email Dto.
                        IParser parser = new ParserFactory().GetParser(emailDto, container);
                        if (parser == null)
                        {
                            continue;
                        }

                        ArticleDto articleDto = parser.Parse(emailDto.Subject, emailDto.Body);

                        // Write Article to DB.
                        Article article = Mapper.MapArticleDtoToArticle(articleDto);
                        article.EmailId = emailDto.MessageId;
                        articlesManager.Add(article);
                    }
                    catch (Exception ex)
                    {
                        var log = NLog.LogManager.GetLogger("database");
                        log.Fatal(ex, ex.Message);
                    }
                }
            }
        }