Ejemplo n.º 1
0
        private IEnumerable <ICab> CabsPourCompte(CompteCab compte, ITaskObserver observer)
        {
            observer.NotifyProgress(this, 0);
            var cabs = new List <ICab>();

            string pageRacine = OuvrirPage(RequêteDossierRacine(compte), observer.InSlice(0, 7));

            cabs.AddRange(CabsPourPage(pageRacine, compte.Editeur, observer.InSlice(7, 10)));

            ITaskObserver loopObs = observer.InSlice(10, 100);
            var           matches = _RegexDossier.Matches(pageRacine);
            var           slices  = loopObs.GetSlices(matches.Count).GetEnumerator();

            foreach (Match mDossier in matches)
            {
                ITaskObserver sliceObs = loopObs.InSlice(slices.Current);
                var           gDossier = mDossier.Groups["url_rep"];
                if (gDossier != null && !String.IsNullOrEmpty(gDossier.Value))
                {
                    string dossier     = gDossier.Value;
                    string pageDossier = OuvrirPage(RequêteDossier(compte, dossier), sliceObs.InSlice(0, 70));
                    if (!String.IsNullOrEmpty(pageDossier))
                    {
                        cabs.AddRange(CabsPourPage(pageDossier, compte.Editeur, sliceObs.InSlice(70, 100)));
                    }
                }
                slices.MoveNext();
            }
            observer.NotifyProgress(this, 100);
            return(cabs);
        }