public override void Start()
        {
            var fileContent = "";

            using (var sr = new StreamReader(Settings.Path))
            {
                fileContent = sr.ReadToEnd();
            }
            var matches = _reg.Matches(fileContent);

            if (matches.Count == 0)
            {
                return;
            }
            _total = _total + matches.Count;
            ImapEvent?.Invoke(this, $"A: {_activatedCount}, P: {_processedCount}, T: {_total}");
            foreach (Match match in matches)
            {
                var url       = match.Value;
                var parsedUrl = new ParsedUrl
                {
                    Url    = url,
                    Status = StatusType.Pending
                };
                Interlocked.Increment(ref _processedCount);
                parsedUrl.AddLog(LoggerTypes.Success, $"Added url {url}");
                ParsedUrls.Add(parsedUrl);
                OnParsedLinkEvent(this, parsedUrl);
                ActivateQueue.AddToQueue(parsedUrl, Callback);
            }
            ImapEvent?.Invoke(this, $"A: {_activatedCount}, P: {_processedCount}, T: {_total}");
        }
Example #2
0
        private async void Callback(ParsedUrl parsedUrl)
        {
            if (!parsedUrl.Verified)
            {
                ActivateQueue.AddToQueue(parsedUrl, Callback);
                ProxyHandlerSingleton.Instance.IncreaseFailCounter(parsedUrl.Proxy);
            }
            else if (_worker.Client.IsConnected && _worker.Client.IsAuthenticated)
            {
                try
                {
                    try
                    {
                        await _worker.Client.Inbox.OpenAsync(FolderAccess.ReadWrite);
                    }
                    catch (Exception e)
                    {
                        parsedUrl.AddLog(LoggerTypes.Exception, $"Marked Uid {parsedUrl.Uid} as seen", e);
                    }

                    Interlocked.Increment(ref _activatedCount);
                    await _worker.Client.Inbox.AddFlagsAsync(parsedUrl.Uid, MessageFlags.Seen, true);

                    parsedUrl.AddLog(LoggerTypes.Debug, $"Marked Uid {parsedUrl.Uid} as seen");
                    parsedUrl.Proxy = null;
                }
                catch (Exception e)
                {
                    parsedUrl.AddLog(LoggerTypes.Exception, $"Marked Uid {parsedUrl.Uid} as seen", e);
                }
            }
        }
 private void Callback(ParsedUrl parsedUrl)
 {
     if (!parsedUrl.Verified)
     {
         ActivateQueue.AddToQueue(parsedUrl, Callback);
         ProxyHandlerSingleton.Instance.IncreaseFailCounter(parsedUrl.Proxy);
     }
     else
     {
         Interlocked.Increment(ref _activatedCount);
         parsedUrl.AddLog(LoggerTypes.Debug, $"{parsedUrl.Url} was verified");
     }
 }
Example #4
0
        private void WorkerOnParsedLinkEvent(object sender, ParsedUrlEventArgs parsedUrlEventArgs)
        {
            var parsedUrl = new ParsedUrl
            {
                Url    = parsedUrlEventArgs.ParsedUrl,
                Uid    = parsedUrlEventArgs.UniqueId,
                Status = StatusType.Pending
            };

            parsedUrl.AddLog(LoggerTypes.Success, $"URL TO: {parsedUrlEventArgs.To}, FROM: {parsedUrlEventArgs.From}");
            ParsedUrls.Add(parsedUrl);
            OnParsedLinkEvent(this, parsedUrl);
            ActivateQueue.AddToQueue(parsedUrl, Callback);
        }
        private async void Callback(ParsedUrl parsedUrl)
        {
            if (!parsedUrl.Verified)
            {
                ActivateQueue.AddToQueue(parsedUrl, Callback);
                ProxyHandlerSingleton.Instance.IncreaseFailCounter(parsedUrl.Proxy);
            }
            else
            {
                var wasOpen = true;
                try
                {
                    try
                    {
                        if (!_worker.Client.IsConnected)
                        {
                            await _worker.Client.ConnectAsync(_worker.EmailUrlParserConfiguration.GetUri())
                            .ConfigureAwait(false);
                        }
                        if (!_worker.Client.IsAuthenticated)
                        {
                            await _worker.Client.AuthenticateAsync(_worker.EmailUrlParserConfiguration.GetCredential());
                        }
                        if (!_worker.Client.Inbox.IsOpen)
                        {
                            wasOpen = false;
                            await _worker.Client.Inbox.OpenAsync(FolderAccess.ReadWrite);
                        }
                    }
                    catch (Exception e)
                    {
                        parsedUrl.AddLog(LoggerTypes.Exception, $"Failed to activate {parsedUrl.Uid}", e);
                    }

                    Interlocked.Increment(ref _activatedCount);

                    await _worker.Client.Inbox.AddFlagsAsync((UniqueId)parsedUrl.Uid, MessageFlags.Seen, true);

                    parsedUrl.AddLog(LoggerTypes.Debug, $"Marked Uid {parsedUrl.Uid} as seen");


                    parsedUrl.Proxy = null;
                }
                catch (Exception e)
                {
                    parsedUrl.AddLog(LoggerTypes.Exception, $"Failed to activate {parsedUrl.Uid}", e);
                }
            }
        }