コード例 #1
0
        public void ListenerThread(string requestUrl)
        {
            ProcessStatus = (int)AkeneoProductIndexerStatuses.ListingInProgress;
            HttpManager   = new BaseWebClientWriter();
            try
            {
                var response = HttpManager.GetData(requestUrl, new WebClientHeader("Authorization", $"Bearer {AuthToken}"));
                AkeneoIndexedProductDto dto = JsonConvert.DeserializeObject <AkeneoIndexedProductDto>(response);
                if (dto.LinksCollection.NextLink != null)
                {
                    var thread = new Thread(() =>
                    {
                        ListenerThread(dto.LinksCollection.NextLink.Href);
                    });
                    thread.Start();
                }

                if (dto.Embed.ItemsCollection != null && dto.Embed.ItemsCollection.Count > 0)
                {
                    var converter = new AkeneoBaseProductIndexerConverter();
                    foreach (var selected in dto.Embed.ItemsCollection)
                    {
                        try
                        {
                            var tempProductStorage = converter.ConvertToApplicationEntity(selected);
                            lock (RequestList)
                            {
                                RequestList.Add(tempProductStorage);
                            }
                        }
                        catch (Exception e)
                        {
                            _logger.error(
                                $"(AkeneoBaseProductIndexerConverter exception): Cannot convert dto entity:  {e.Message}");
                        }
                    }
                }

                if (dto.LinksCollection.NextLink == null)
                {
                    ProcessStatus = (int)AkeneoProductIndexerStatuses.ListingFinished;
                    InvokeOnFinishedListing();
                }
            }
            catch (Exception e)
            {
                _logger.error(e.Message);
            }
        }
コード例 #2
0
 public void LaunchService()
 {
     ServiceStatus = BaseServicesStatuses.ServiceLaunching;
     try
     {
         _c = new ChromeDriverResolver(_driverTasks, Proxy, settings.BaseUrl, _l);
         if (!_c.Initialize())
         {
             ServiceStatus = BaseServicesStatuses.ServiceError;
             return;
         }
         Thread.Sleep(15000);
         _c.UpdateFieldData("#username", settings.Login);
         _c.UpdateFieldData("#password", settings.Password);
         _c.ExecuteScript("document.getElementById('form1').submit()");
         Thread.Sleep(5000);
         ServiceStatus = BaseServicesStatuses.ServiceLaunched;
     }
     catch (Exception e)
     {
         ServiceStatus = BaseServicesStatuses.ServiceError;
         _l.error($"[ShareAsaleService] An exception occured, during initializing chrome driver: {e.Message} -> {e.StackTrace}");
         _c?.Dispose();
     }
 }
コード例 #3
0
 public void List()
 {
     if (ProcessStatus.Equals(AkeneoProductIndexerStatuses.ListingError))
     {
         _l.error("Fatal error during indexing Akeneo categories, you can find more information in application error logs");
         return;
     }
     if (ProcessStatus.Equals(AkeneoProductIndexerStatuses.ListingStarting) ||
         ProcessStatus.Equals(AkeneoProductIndexerStatuses.ListingInProgress) ||
         ProcessStatus.Equals(AkeneoProductIndexerStatuses.ListingFinished))
     {
         _l.warn("Cancel - process already started");
     }
     else
     {
         ProcessStatus = AkeneoProductIndexerStatuses.ListingStarting;
         new Thread(() => {
             ListenerThread($"{Settings.BaseAkeneoUrl}{Settings.AkeneoCategoryListUrl}?limit=100");
         }).Start();
     }
 }
コード例 #4
0
        public bool Initialize()
        {
            try {
                var _ds = new ChromeOptions();

                if (settings.DisableInfoBar)
                {
                    _ds.AddArgument("disable-infobars");
                }

                if (settings.LaunchIncognito)
                {
                    _ds.AddArgument("--incognito");
                }

                if (settings.IgnoreCertificateErrors)
                {
                    _ds.AddArgument("ignore-certificate-errors");
                }

                if (settings.LaunchHeadless)
                {
                    // _ds.AddArgument("--headless");
                }

                if (settings.UseProxy)
                {
                    // var _prPath = CreateTempProxyExtension();
                    var _prPath = $"{Directory.GetCurrentDirectory()}/temp/test.zip";
                    if (ReferenceEquals(_prPath, null))
                    {
                        throw new Exception("Failed to create proxy service extension");
                    }
                    _ds.AddExtension(_prPath);
                }

                _cd = new ChromeDriver($"{Directory.GetCurrentDirectory()}/Scrapper/Implementation/Driver", _ds);

                //_cd.Manage().Window.Minimize();
                _cd.Navigate().GoToUrl(_baseUrl);
                return(true);
            }
            catch (WebDriverException e)
            {
                _l.error($"Chrome Driver: While trying to initialize, exception occured! {e.Message} -> {e.StackTrace}");
                _l.error(e.Message);
                this.Dispose();
                return(false);
            }
        }