From 33c8c0f0d65724154ee8ef737411b38daa9bbfad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Domeradzki?= Date: Sun, 23 Feb 2025 17:28:36 +0100 Subject: [PATCH] Rewrite GitHub service from xpath to css selectors --- ArchiSteamFarm/Web/GitHub/GitHubService.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ArchiSteamFarm/Web/GitHub/GitHubService.cs b/ArchiSteamFarm/Web/GitHub/GitHubService.cs index 8dd7d1a26..58e4fa148 100644 --- a/ArchiSteamFarm/Web/GitHub/GitHubService.cs +++ b/ArchiSteamFarm/Web/GitHub/GitHubService.cs @@ -98,12 +98,12 @@ public static class GitHubService { return null; } - IEnumerable revisionNodes = response.Content.SelectNodes("//li[contains(@class, 'wiki-history-revision')]"); + IHtmlCollection revisionNodes = response.Content.QuerySelectorAll("li[class*='wiki-history-revision']"); Dictionary result = new(); foreach (IElement revisionNode in revisionNodes) { - IAttr? versionNode = revisionNode.SelectSingleNode(".//input/@value"); + IElement? versionNode = revisionNode.QuerySelector("input[value]"); if (versionNode == null) { ASF.ArchiLogger.LogNullError(versionNode); @@ -111,7 +111,7 @@ public static class GitHubService { return null; } - string versionText = versionNode.Value; + string? versionText = versionNode.GetAttribute("value"); if (string.IsNullOrEmpty(versionText)) { ASF.ArchiLogger.LogNullError(versionText); @@ -119,7 +119,7 @@ public static class GitHubService { return null; } - IAttr? dateTimeNode = revisionNode.SelectSingleNode(".//relative-time/@datetime"); + IElement? dateTimeNode = revisionNode.QuerySelector("relative-time[datetime]"); if (dateTimeNode == null) { ASF.ArchiLogger.LogNullError(dateTimeNode); @@ -127,7 +127,7 @@ public static class GitHubService { return null; } - string dateTimeText = dateTimeNode.Value; + string? dateTimeText = dateTimeNode.GetAttribute("datetime"); if (string.IsNullOrEmpty(dateTimeText)) { ASF.ArchiLogger.LogNullError(dateTimeText); @@ -162,7 +162,7 @@ public static class GitHubService { return null; } - IElement? markdownBodyNode = response.Content.SelectSingleNode("//div[@class='markdown-body']"); + IElement? markdownBodyNode = response.Content.QuerySelector("div[class='markdown-body']"); return markdownBodyNode?.InnerHtml.Trim() ?? ""; }