/// <summary>
        /// Creates an <see cref="IEmailManager"/>
        /// </summary>
        /// <param name="emailFeedConfiguration"></param>
        /// <param name="factory"></param>
        /// <returns></returns>
        public static IEmailManager CreateEmailManager(this EmailFeedConfiguration emailFeedConfiguration, IEmailManagerFactory factory)
        {
            // get protocol
            var protocol = emailFeedConfiguration.Protocol ?? string.Empty;

            // compare protocol
            if (string.CompareOrdinal(protocol, ImapProtocol) == 0)
            {
                return(factory.CreateEmailManager(emailFeedConfiguration.Host,
                                                  ImapPort,
                                                  true,
                                                  emailFeedConfiguration.UserName,
                                                  emailFeedConfiguration.Password));
            }

            throw new UnsupportedEmailProtocolException(protocol);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Instantiates an <see cref="EmailFeed"/>
        /// </summary>
        /// <param name="emailManagerFactory"></param>
        /// <param name="marketDataRepositoryFactory"></param>
        /// <param name="emailFeedConfiguration"></param>
        public EmailFeed(IEmailManagerFactory emailManagerFactory,
                         IMarketDataRepositoryFactory marketDataRepositoryFactory,
                         EmailFeedConfiguration emailFeedConfiguration)
        {
            // set config
            _emailManagerFactory         = emailManagerFactory;
            _marketDataRepositoryFactory = marketDataRepositoryFactory;
            _emailFeedConfiguration      = emailFeedConfiguration;

            // create email manager
            _emailManager = _emailFeedConfiguration.CreateEmailManager(_emailManagerFactory);

            // set last polled time
            _lastPolled = _emailFeedConfiguration.LastChecked;

            // create timer
            _pollingTimer = new Timer(obj => RetrieveNewEmails());
        }
 /// <summary>
 /// Creates search criteria from feed configuration
 /// </summary>
 /// <param name="emailFeedConfiguration"></param>
 /// <returns></returns>
 public static EmailSearchCriteria CreateSearchCriteria(this EmailFeedConfiguration emailFeedConfiguration)
 {
     return(new EmailSearchCriteria
     {
         Folder = emailFeedConfiguration.Folder,
         From = emailFeedConfiguration.From,
         Since = emailFeedConfiguration.After,
         After = emailFeedConfiguration.Before,
         BodyKeywords = !string.IsNullOrWhiteSpace(emailFeedConfiguration.BodyKeywords)
                            ? emailFeedConfiguration.BodyKeywords.Split(new[] { "|" },
                                                                        StringSplitOptions.RemoveEmptyEntries)
                            : new string[0],
         SubjectKeywords = !string.IsNullOrWhiteSpace(emailFeedConfiguration.SubjectKeywords)
                               ? emailFeedConfiguration.SubjectKeywords.Split(new[] { "|" },
                                                                              StringSplitOptions.RemoveEmptyEntries)
                               : new string[0]
     });
 }