public async Task <ActionResult <CrawlStepper> > PostCrawlStepper([FromForm] CrawlStepper crawlStepper)
        {
            _context.CrawlSteppers.Add(crawlStepper);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCrawlStepper", new { id = crawlStepper.Id }, crawlStepper));
        }
        public async Task <IActionResult> PutCrawlStepper([FromForm] int id, [FromForm] CrawlStepper crawlStepper)
        {
            if (id != crawlStepper.Id)
            {
                return(BadRequest());
            }

            _context.Entry(crawlStepper).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CrawlStepperExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public void CrawlStepParseLinkListTest()
        {
            // Arrange
            var stepper = new CrawlStepper();

            stepper.StepSequence.Add(new CrawlStepGetLinkList(
                                         1, CrawlSetpType.Single, new AngleSharp.Url("http://gate.ahram.org.eg/index.aspx"), "#ContentPlaceHolder1_divUrgent .blok_file > a"
                                         ));
            stepper.StepSequence.Add(new CrawlStepParseLinkList {
                Id         = 2,
                CrawlItems = new List <CrawlItem>
                {
                    new CrawlItem {
                        Name = "Title", Selector = "Title"
                    },
                    new CrawlItem {
                        Name = "Image", Selector = "#ContentPlaceHolder1_divMainImage > img", Attr = "src"
                    }
                }
            });
            // Act
            var res = stepper.Crawl();

            // Assert
            Assert.True(res.Count > 0, "This test needs an implementation");
        }
        public void CrawlStepGetRssLinksTest()
        {
            // Arrange
            var stepper = new CrawlStepper();

            stepper.StepSequence.Add(new CrawlStepGetRssLinks()
            {
                Id            = 1,
                CrawlStepType = CrawlSetpType.Single,
                Url           = new AngleSharp.Url("https://www.almasryalyoum.com/rss/rssfeeds"),
                Selector      = "//rss/channel/item/link/text()"
            });
            stepper.StepSequence.Add(new CrawlStepParseLinkList
            {
                Id         = 2,
                CrawlItems = new List <CrawlItem>
                {
                    new CrawlItem {
                        Name = "Title", Selector = "Title"
                    },
                    new CrawlItem {
                        Name = "Image", Selector = ".article .articleimg > img", Attr = "src"
                    }
                }
            });
            // Act
            var res = stepper.Crawl();

            // Assert
            //Assert.True(String.IsNullOrEmpty(res[0]?.CrawlItems[0]?.Value) , "Title Crawling fail for El masry Elyom ");
            //Assert.True(String.IsNullOrEmpty(res[0]?.CrawlItems[1]?.Value), "Image Crawling fail for El masry Elyom ");
            Assert.True(res.Count > 0, "This test needs an implementation");
        }
        public void CrawlStepGetLinkListTest()
        {
            // Arrange
            var stepper = new CrawlStepper();

            stepper.StepSequence.Add(new CrawlStepGetLinkList(1, CrawlSetpType.Single,
                                                              new AngleSharp.Url("http://gate.ahram.org.eg/index.aspx"),
                                                              "#ContentPlaceHolder1_divUrgent .blok_file > a"
                                                              ));
            // Act
            var res = stepper.Crawl();

            // Assert
            Assert.True(res.Count > 0, "This test needs an implementation");
        }