public PageState <TPage> Reduce(PageState <TPage> pageState, SceneState <TScene> sceneState, IPageAction action) { if (action is PushAction) { return(ReducePush(pageState, sceneState, (PushAction)action)); } else if (action is PopAction) { return(ReducePop(pageState, sceneState, (PopAction)action)); } else if (action is ResetAction) { return(ReduceReset(pageState, sceneState, (ResetAction)action)); } else if (action is SetDataAction) { return(ReduceSetData(pageState, (SetDataAction)action)); } else if (action is ReplaceAction) { return(ReduceReplace(pageState, sceneState, (ReplaceAction)action)); } else if (action is AdjustAction) { return(ReduceAdjust(pageState, sceneState)); } return(pageState); }
public Page(Uri _Uri, IPageAction <Z> _pageAction, IPageManager <Z> _pageManager) { pageAction = _pageAction; pageManager = _pageManager; CurrentUri = _Uri; Block = new List <Z>(); ChildrenPage = new List <Page <Z> >(); }
public Parser(IGetHtmlContent _htmlSubject, AbstractPageFactory <T> _factory) { collectionConcurrent = new ConcurrentQueue <string>(); _simpleFactory = _factory; _Kernal = new StandardKernel(); _Kernal.Load(Assembly.GetExecutingAssembly()); _ipageManger = (_Kernal.Get <PageManager>() as IPageManager <T>); _ipageAction = (_Kernal.Get <PageIterableAction>() as IPageAction <T>); htmlSubject = _htmlSubject; }
static void Main(string[] args) { _parser = new Parser <IContainerForBlock <PageTagBlock> >(new HtmlSubject(), new SimplePageFactory <IContainerForBlock <PageTagBlock> >()); _pageIterable = new PageIterableAction(); _pageManager = new PageManager(); _pageMen = new SimplePageFactory <IContainerForBlock <PageTagBlock> >().CreatePage( new Uri("https://www.lamoda.ru/men-home/?sitelink=topmenuM"), _pageIterable, _pageManager); var answer = _parser.GetPageCollection(_pageMen).Result; ConcurrentQueue <SubjectInfo> result = new ConcurrentQueue <SubjectInfo>(); var nChunks = 10; var totalLength = answer.Count(); var chunkLength = (int)Math.Ceiling(totalLength / (double)nChunks); var _random = Enumerable.Range(0, 5) .Select(i => answer.Skip(i * chunkLength).Take(chunkLength)).ToList(); var ans = answer.Take((int)answer.Count / 8); try { foreach (var i in ans) { var data = _parser.GetSubjectCollection(i).Result; foreach (var j in data) { result.Enqueue(j); } } } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine(); }
public override Page <T> CreatePage(Uri _uri, IPageAction <T> _iaction, IPageManager <T> _imanager) { return(new Page <T>(_uri, _iaction, _imanager)); }
public abstract Page <T> CreatePage(Uri _uri, IPageAction <T> _iaction, IPageManager <T> _imanager);