public async Task <List <WikiJobRequest> > GetNewJobDefinitions() { var ast = await parseFile(); var templates = ast.Lines.SelectMany(x => x.EnumDescendants().OfType <Template>()); var jobs = templates.Select(template => WikiJobRequestFactory.GetWikiJobRequest(JobType.TextReplacementJob, GetTimeZone(), template)); return(jobs.ToList()); }
public static WikiJobRequest GetSampleContinuityLinkFixJobRequest() { var parser = new WikitextParser(); var ast = parser.Parse("{{User:Tigerpaw28/Sandbox/Template:WikiBotRequest|type=Link Fix|username=Tigerpaw28|timestamp=14:58, 30 June 2020 (EDT)|before=[[Hot Shot (Armada)]]|after=[[Hot Shot (Armada)/Cartoon continuity]]|headers=Armada cartoon, Energon cartoon, Cybertron cartoon|media=Cartoon|pages=Optimus Prime (Armada)|comment=Test job|status=PendingPreApproval}}"); var templates = ast.Lines.First <LineNode>().EnumDescendants().OfType <Template>(); var request = WikiJobRequestFactory.GetWikiJobRequest(JobType.ContinuityLinkFixJob, TimeZoneInfo.Local, templates.First()); return(request); }
public static WikiJobRequest GetSampleLinkFixJobRequest() { var parser = new WikitextParser(); var ast = parser.Parse("{{User:Tigerpaw28/Sandbox/Template:WikiBotRequest|type=Link Fix|username=Tigerpaw28|timestamp=14:58, 30 June 2020 (EDT)|before=[[Commercial]]|after=[[Commercial|Test]]|pages=Commercial|comment=Test job|status=PendingPreApproval}}"); var templates = ast.Lines.First <LineNode>().EnumDescendants().OfType <Template>(); var request = WikiJobRequestFactory.GetWikiJobRequest(JobType.LinkFixJob, TimeZoneInfo.Local, templates.First()); return(request); }
private WikiJobRequest BuildRequest() { var parser = new WikitextParser(); var ast = parser.Parse("{{User:Tigerpaw28/Sandbox/Template:WikiBotRequest|type=Text Replacement|username=Tigerpaw28|timestamp=14:58, 30 June 2020 (EDT)|before=Deceptitran|after=not a Robot|comment=Test job|status=PendingPreApproval}}"); var templates = ast.Lines.First <LineNode>().EnumDescendants().OfType <Template>(); var request = WikiJobRequestFactory.GetWikiJobRequest(JobType.TextReplacementJob, TimeZoneInfo.Local, templates.First()); List <Page> pages = new List <Page>(); pages.Add(new Page(0, "Test")); pages.Add(new Page(1, "Commercial")); request.Pages = pages; return(request); }
public async Task <List <WikiJobRequest> > GetNewJobDefinitions() { IEnumerable <WikiJobRequest> jobs = null; using (var client = new WikiClient { ClientUserAgent = "WCLQuickStart/1.0 (your user name or contact information here)" }) { try { _log.Information($"Logging into Wiki"); var site = _wikiAccessLogic.GetLoggedInWikiSite(_wikiLoginConfig, client, _log); var page = new WikiPage(site, _wikiRequestPage); _log.Information($"Fetching content from job request page {page.Title}"); // Fetch content from the job request page so we can build jobs from it await page.RefreshAsync(PageQueryOptions.FetchContent | PageQueryOptions.ResolveRedirects); if ((page?.Content ?? "").Length > 1) { var ast = new WikitextParser().Parse(page?.Content); var templates = ast.Lines.First().EnumDescendants().OfType <Template>(); _log.Information("Building jobs."); jobs = templates.Select(template => WikiJobRequestFactory.GetWikiJobRequest((JobType)Enum.Parse(typeof(JobType), template.Arguments.Single(arg => arg.Name.ToPlainText() == "type").Value.ToPlainText().Replace(" ", "") + "Job"), GetTimeZone(), template)); foreach (WikiJobRequest request in jobs) { _log.Information($"Request {request.RawRequest} has status {request.Status}"); } } await site.LogoutAsync(); } catch (Exception ex) { _log.Error(ex, "An error occurred while trying to fetch new requests: "); } } return(jobs?.ToList()); }
public static List <WikiJobRequest> GetSampleJobRequests(bool includePages) { var requests = new List <WikiJobRequest>(); var array = GetRawRequestArray(); var parser = new WikitextParser(); for (int x = 0; x < 5; x++) { var ast = parser.Parse(array[x]); var templates = ast.Lines.First <LineNode>().EnumDescendants().OfType <Template>(); var request = WikiJobRequestFactory.GetWikiJobRequest(JobType.TextReplacementJob, TimeZoneInfo.Local, templates.First()); request.ID = x + 2; if (!includePages) { request.Pages = null; } requests.Add(request); } return(requests); }