Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        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);
        }