From 0c3ae354506ba130be420e2d397e3608099ece4a Mon Sep 17 00:00:00 2001 From: Mira Date: Mon, 4 May 2026 09:02:43 +0200 Subject: [PATCH] switch from htmlAgilityPack to AngleSharp --- NetStone/Definitions/Model/PagedDefinition.cs | 1 - NetStone/LodestoneClient.cs | 14 ++- NetStone/Model/IPaginatedResult.cs | 8 +- NetStone/Model/LodestoneParseable.cs | 38 +++--- .../CWLS/LodestoneCrossworldLinkshell.cs | 4 +- .../Members/CrossworldLinkshellMemberEntry.cs | 4 +- .../Achievement/CharacterAchievementEntry.cs | 4 +- .../Achievement/CharacterAchievementPage.cs | 4 +- .../Character/CharacterAttributes.cs | 4 +- .../Character/ClassJob/CharacterClassJob.cs | 4 +- .../Character/ClassJob/ClassJobBozja.cs | 4 +- .../Character/ClassJob/ClassJobEntry.cs | 4 +- .../Character/ClassJob/ClassJobEureka.cs | 4 +- .../Collectable/CharacterCollectable.cs | 4 +- .../Collectable/CharacterCollectableEntry.cs | 4 +- .../Character/FreeCompanySocialGroup.cs | 4 +- .../Character/Gear/CharacterGear.cs | 4 +- .../Parseables/Character/Gear/GearEntry.cs | 4 +- .../Character/Gear/SoulcrystalEntry.cs | 6 +- .../Character/LodestoneCharacter.cs | 4 +- .../FreeCompany/FreeCompanyEstate.cs | 4 +- .../FreeCompany/FreeCompanyFocus.cs | 4 +- .../FreeCompany/FreeCompanyFocusEntry.cs | 4 +- .../FreeCompany/FreeCompanyReputation.cs | 5 +- .../FreeCompany/FreeCompanyReputationEntry.cs | 4 +- .../FreeCompany/LodestoneFreeCompany.cs | 5 +- .../FreeCompany/Members/FreeCompanyMembers.cs | 4 +- .../Members/FreeCompanyMembersEntry.cs | 4 +- NetStone/Model/Parseables/IconLayers.cs | 4 +- .../Linkshell/LodestoneLinkshell.cs | 4 +- .../Linkshell/Members/LinkshellMemberEntry.cs | 4 +- .../CWLS/CrossworldLinkshellSearchEntry.cs | 4 +- .../CWLS/CrossworldLinkshellSearchPage.cs | 4 +- .../Search/Character/CharacterSearchEntry.cs | 4 +- .../Search/Character/CharacterSearchPage.cs | 4 +- .../FreeCompany/FreeCompanySearchEntry.cs | 4 +- .../FreeCompany/FreeCompanySearchPage.cs | 4 +- .../Search/Linkshell/LinkshellSearchEntry.cs | 4 +- .../Search/Linkshell/LinkshellSearchPage.cs | 4 +- NetStone/Model/Parseables/SocialGroup.cs | 4 +- NetStone/NetStone.csproj | 3 +- NetStone/NetStone.xml | 118 +++++++++++------- 42 files changed, 177 insertions(+), 153 deletions(-) diff --git a/NetStone/Definitions/Model/PagedDefinition.cs b/NetStone/Definitions/Model/PagedDefinition.cs index c509d80..670590b 100644 --- a/NetStone/Definitions/Model/PagedDefinition.cs +++ b/NetStone/Definitions/Model/PagedDefinition.cs @@ -1,5 +1,4 @@ using Newtonsoft.Json; -using Newtonsoft.Json.Linq; namespace NetStone.Definitions.Model; diff --git a/NetStone/LodestoneClient.cs b/NetStone/LodestoneClient.cs index bc89782..f87525e 100644 --- a/NetStone/LodestoneClient.cs +++ b/NetStone/LodestoneClient.cs @@ -2,7 +2,8 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp; +using AngleSharp.Dom; using NetStone.Definitions; using NetStone.GameData; using NetStone.Model; @@ -251,9 +252,11 @@ await GetParsed($"/lodestone/freecompany/{query.BuildQueryString()}&page={page}" /// The user agent to use for the request. /// The request failed due to an underlying issue such as network connectivity, DNS failure, server certificate validation or timeout. /// The instantiated LodestoneParseable in case of success. - private async Task GetParsed(string url, Func createParseable, + private async Task GetParsed(string url, Func createParseable, UserAgent agent = UserAgent.Desktop) where T : LodestoneParseable { + var config = Configuration.Default.WithDefaultLoader(); + var context = BrowsingContext.New(config); var request = new HttpRequestMessage(HttpMethod.Get, url); switch (agent) @@ -273,10 +276,9 @@ await GetParsed($"/lodestone/freecompany/{query.BuildQueryString()}&page={page}" if (response.StatusCode == HttpStatusCode.NotFound) return null; - var doc = new HtmlDocument(); - doc.LoadHtml(await response.Content.ReadAsStringAsync()); - - return createParseable.Invoke(doc.DocumentNode); + var doc = await context.OpenAsync(async void (req) => req.Content(await response.Content.ReadAsStringAsync())); + + return createParseable.Invoke(doc.Body!); } /// diff --git a/NetStone/Model/IPaginatedResult.cs b/NetStone/Model/IPaginatedResult.cs index 9e145c4..b002410 100644 --- a/NetStone/Model/IPaginatedResult.cs +++ b/NetStone/Model/IPaginatedResult.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Search; @@ -39,7 +39,7 @@ public abstract class PaginatedIdResult where TEntryDef : PagedEntryDefinition { /// - protected PaginatedIdResult(HtmlNode rootNode, PagedDefinition pageDefinition, + protected PaginatedIdResult(IElement rootNode, PagedDefinition pageDefinition, Func> nextPageFunc, string id) : base(rootNode, pageDefinition, nextPageFunc, id) { @@ -55,7 +55,7 @@ public abstract class PaginatedSearchResult where TQuery : ISearchQuery { /// - protected PaginatedSearchResult(HtmlNode rootNode, PagedDefinition pageDefinition, + protected PaginatedSearchResult(IElement rootNode, PagedDefinition pageDefinition, Func> nextPageFunc, TQuery query) : base(rootNode, pageDefinition, nextPageFunc, query) @@ -85,7 +85,7 @@ public abstract class PaginatedResult : Lodes /// CSS definitions for the paginated type /// Function to retrieve a page of this type /// The input used to request further pages. - protected PaginatedResult(HtmlNode rootNode, PagedDefinition pageDefinition,Func> nextPageFunc, TRequest request) : base(rootNode) + protected PaginatedResult(IElement rootNode, PagedDefinition pageDefinition,Func> nextPageFunc, TRequest request) : base(rootNode) { this.PageDefinition = pageDefinition; this.request = request; diff --git a/NetStone/Model/LodestoneParseable.cs b/NetStone/Model/LodestoneParseable.cs index eea463b..2869ca5 100644 --- a/NetStone/Model/LodestoneParseable.cs +++ b/NetStone/Model/LodestoneParseable.cs @@ -1,11 +1,10 @@ -using HtmlAgilityPack; -using HtmlAgilityPack.CssSelectors.NetCore; -using NetStone.Definitions; +using NetStone.Definitions; using NetStone.Definitions.Model; using System; using System.Linq; using System.Text.RegularExpressions; using System.Web; +using AngleSharp.Dom; namespace NetStone.Model; @@ -17,33 +16,33 @@ public abstract class LodestoneParseable /// /// The HTML document's root node. /// - protected readonly HtmlNode RootNode; + protected readonly IElement RootNode; /// /// Constructs an instance of parseable data for given node /// /// - protected LodestoneParseable(HtmlNode rootNode) + protected LodestoneParseable(IElement rootNode) { this.RootNode = rootNode; } /// - /// Query a via pack selector. + /// Query a via pack selector. /// /// Definition of the node. /// The needed node. - protected HtmlNode QueryNode(DefinitionsPack pack) => this.RootNode.QuerySelector(pack.Selector); + protected IElement? QueryNode(DefinitionsPack pack) => this.RootNode.QuerySelector(pack.Selector); /// - /// Query all ChildNodes of a via pack selector. + /// Query all ChildNodes of a via pack selector. /// Removes unneeded "#text" nodes. /// /// Definition of the node. /// All ChildNodes. - protected HtmlNode[] QueryChildNodes(DefinitionsPack pack) => this.RootNode + protected IElement[] QueryChildNodes(DefinitionsPack pack) => this.RootNode .QuerySelectorAll(pack.Selector) - .Where(x => x.Name != "#text") + .Where(x => x.NodeName != "#text") .ToArray(); /// @@ -53,7 +52,7 @@ protected HtmlNode[] QueryChildNodes(DefinitionsPack pack) => this.RootNode /// Parser definition /// List of nodes /// - protected HtmlNode[] QueryContainer(PagedDefinition pagedDefinition) where TEntry : PagedEntryDefinition + protected IElement[] QueryContainer(PagedDefinition pagedDefinition) where TEntry : PagedEntryDefinition { var entryDef = pagedDefinition.Entry; @@ -61,7 +60,7 @@ protected HtmlNode[] QueryContainer(PagedDefinition pagedDefinit throw new ArgumentException("Could not get entry definition"); return QueryNode(pagedDefinition.Root) - ?.QuerySelectorAll(entryDef.Root.Selector).ToArray() ?? Array.Empty(); + ?.QuerySelectorAll(entryDef.Root.Selector).ToArray() ?? Array.Empty(); } /// @@ -78,13 +77,12 @@ protected HtmlNode[] QueryContainer(PagedDefinition pagedDefinit /// InnerText of the node or empty string on parse error. protected string Parse(DefinitionsPack pack) { - if (!string.IsNullOrEmpty(pack.Regex)) - { - var res = ParseRegex(pack); + if (string.IsNullOrEmpty(pack.Regex)) + return ParseInnerText(pack); + var res = ParseRegex(pack); - if (res.Count != 0) - return res[1].Value; - } + if (res.Count != 0) + return res[1].Value; return ParseInnerText(pack); } @@ -100,7 +98,7 @@ protected string ParseInnerText(DefinitionsPack pack, bool noAttribute = false) var node = QueryNode(pack); // Handle default attribute parsing - var text = !string.IsNullOrEmpty(pack.Attribute) && !noAttribute ? ParseAttribute(pack) : node?.InnerText; + var text = !string.IsNullOrEmpty(pack.Attribute) && !noAttribute ? ParseAttribute(pack) : node?.TextContent; return !string.IsNullOrEmpty(text) ? HttpUtility.HtmlDecode(text) : ""; } @@ -147,7 +145,7 @@ protected string ParseDirectInnerText(DefinitionsPack pack, bool noAttribute = f var text = !string.IsNullOrEmpty(pack.Attribute) && !noAttribute ? ParseAttribute(pack) - : node?.GetDirectInnerText(); + : node?.ChildNodes.OfType().Select(m => m.Text).FirstOrDefault(); return !string.IsNullOrEmpty(text) ? HttpUtility.HtmlDecode(text) : ""; } diff --git a/NetStone/Model/Parseables/CWLS/LodestoneCrossworldLinkshell.cs b/NetStone/Model/Parseables/CWLS/LodestoneCrossworldLinkshell.cs index fb7463c..f43a1e9 100644 --- a/NetStone/Model/Parseables/CWLS/LodestoneCrossworldLinkshell.cs +++ b/NetStone/Model/Parseables/CWLS/LodestoneCrossworldLinkshell.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions; using NetStone.Definitions.Model.CWLS; using NetStone.Model.Parseables.CWLS.Members; @@ -21,7 +21,7 @@ public class LodestoneCrossworldLinkshell : PaginatedIdResultThe root document node of the page. /// The holding definitions to be used to access data. /// The ID of the cross world linkshell. - public LodestoneCrossworldLinkshell(LodestoneClient client, HtmlNode rootNode, DefinitionsContainer container, string id) + public LodestoneCrossworldLinkshell(LodestoneClient client, IElement rootNode, DefinitionsContainer container, string id) : base(rootNode,container.CrossworldLinkshellMember,client.GetCrossworldLinkshell,id) { this.definition = container.CrossworldLinkshell; diff --git a/NetStone/Model/Parseables/CWLS/Members/CrossworldLinkshellMemberEntry.cs b/NetStone/Model/Parseables/CWLS/Members/CrossworldLinkshellMemberEntry.cs index f7a7790..f6873fb 100644 --- a/NetStone/Model/Parseables/CWLS/Members/CrossworldLinkshellMemberEntry.cs +++ b/NetStone/Model/Parseables/CWLS/Members/CrossworldLinkshellMemberEntry.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.CWLS; namespace NetStone.Model.Parseables.CWLS.Members; @@ -14,7 +14,7 @@ public class CrossworldLinkshellMemberEntry : LodestoneParseable /// /// Root html node of this entry /// Css and regex definition - public CrossworldLinkshellMemberEntry(HtmlNode rootNode, CrossworldLinkshellMemberEntryDefinition definition) : base(rootNode) + public CrossworldLinkshellMemberEntry(IElement rootNode, CrossworldLinkshellMemberEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementEntry.cs b/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementEntry.cs index 88a891b..cec3d96 100644 --- a/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementEntry.cs +++ b/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementEntry.cs @@ -1,6 +1,6 @@ using System; using System.Linq; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.Achievement; @@ -17,7 +17,7 @@ public class CharacterAchievementEntry : LodestoneParseable /// /// Root html node of this entry /// Css and regex definition - public CharacterAchievementEntry(HtmlNode rootNode, CharacterAchievementEntryDefinition definition) : base(rootNode) + public CharacterAchievementEntry(IElement rootNode, CharacterAchievementEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementPage.cs b/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementPage.cs index c761b48..a7a56a7 100644 --- a/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementPage.cs +++ b/NetStone/Model/Parseables/Character/Achievement/CharacterAchievementPage.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.Achievement; @@ -18,7 +18,7 @@ public class CharacterAchievementPage : PaginatedIdResultRoot node of the achievement page /// Parse definition pack /// ID of the character - public CharacterAchievementPage(LodestoneClient client, HtmlNode rootNode, + public CharacterAchievementPage(LodestoneClient client, IElement rootNode, CharacterAchievementDefinition definition,string charId) : base(rootNode, definition, client.GetCharacterAchievement, charId) { diff --git a/NetStone/Model/Parseables/Character/CharacterAttributes.cs b/NetStone/Model/Parseables/Character/CharacterAttributes.cs index 3ecb985..859b0e0 100644 --- a/NetStone/Model/Parseables/Character/CharacterAttributes.cs +++ b/NetStone/Model/Parseables/Character/CharacterAttributes.cs @@ -1,5 +1,5 @@ using System; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character; @@ -16,7 +16,7 @@ public class CharacterAttributes : LodestoneParseable /// /// Root HTML node of the character profile page on Lodestone /// Definitions on how to parse attributes from the HTML - public CharacterAttributes(HtmlNode rootNode, CharacterAttributesDefinition definition) : base(rootNode) + public CharacterAttributes(IElement rootNode, CharacterAttributesDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/ClassJob/CharacterClassJob.cs b/NetStone/Model/Parseables/Character/ClassJob/CharacterClassJob.cs index 8301698..9a067a8 100644 --- a/NetStone/Model/Parseables/Character/ClassJob/CharacterClassJob.cs +++ b/NetStone/Model/Parseables/Character/ClassJob/CharacterClassJob.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.ClassJob; @@ -16,7 +16,7 @@ public class CharacterClassJob : LodestoneParseable /// /// Root html node of Lodestone page /// Definition to parse ClassJobs - public CharacterClassJob(HtmlNode rootNode, CharacterClassJobDefinition definition) : base(rootNode) + public CharacterClassJob(IElement rootNode, CharacterClassJobDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/ClassJob/ClassJobBozja.cs b/NetStone/Model/Parseables/Character/ClassJob/ClassJobBozja.cs index 12f45b8..f04e86c 100644 --- a/NetStone/Model/Parseables/Character/ClassJob/ClassJobBozja.cs +++ b/NetStone/Model/Parseables/Character/ClassJob/ClassJobBozja.cs @@ -1,6 +1,6 @@ using System.Linq; using System.Text.RegularExpressions; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.ClassJob; @@ -17,7 +17,7 @@ public class ClassJobBozja : LodestoneParseable, IOptionalParseable /// Root node of this entry /// Parser definition - public ClassJobBozja(HtmlNode rootNode, ClassJobBozjaDefinition definition) : base(rootNode) + public ClassJobBozja(IElement rootNode, ClassJobBozjaDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/ClassJob/ClassJobEntry.cs b/NetStone/Model/Parseables/Character/ClassJob/ClassJobEntry.cs index 626caa9..52f1f5e 100644 --- a/NetStone/Model/Parseables/Character/ClassJob/ClassJobEntry.cs +++ b/NetStone/Model/Parseables/Character/ClassJob/ClassJobEntry.cs @@ -1,5 +1,5 @@ using System.Linq; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.ClassJob; @@ -16,7 +16,7 @@ public class ClassJobEntry : LodestoneParseable, IOptionalParseable /// Root node of this entry /// Parser definition - public ClassJobEntry(HtmlNode rootNode, ClassJobEntryDefinition definition) : base(rootNode) + public ClassJobEntry(IElement rootNode, ClassJobEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/ClassJob/ClassJobEureka.cs b/NetStone/Model/Parseables/Character/ClassJob/ClassJobEureka.cs index 531b832..d902ff1 100644 --- a/NetStone/Model/Parseables/Character/ClassJob/ClassJobEureka.cs +++ b/NetStone/Model/Parseables/Character/ClassJob/ClassJobEureka.cs @@ -1,5 +1,5 @@ using System.Linq; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.ClassJob; @@ -16,7 +16,7 @@ public class ClassJobEureka : LodestoneParseable, IOptionalParseable /// Root node of this entry /// Parser definition - public ClassJobEureka(HtmlNode rootNode, ClassJobEurekaDefinition definition) : base(rootNode) + public ClassJobEureka(IElement rootNode, ClassJobEurekaDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/Collectable/CharacterCollectable.cs b/NetStone/Model/Parseables/Character/Collectable/CharacterCollectable.cs index 950652c..a20c61d 100644 --- a/NetStone/Model/Parseables/Character/Collectable/CharacterCollectable.cs +++ b/NetStone/Model/Parseables/Character/Collectable/CharacterCollectable.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.Collectable; @@ -15,7 +15,7 @@ public class CharacterCollectable : LodestoneParseable /// /// Root node of list /// Parser definitions - public CharacterCollectable(HtmlNode rootNode, CharacterCollectableDefinition definition) : base(rootNode) + public CharacterCollectable(IElement rootNode, CharacterCollectableDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/Collectable/CharacterCollectableEntry.cs b/NetStone/Model/Parseables/Character/Collectable/CharacterCollectableEntry.cs index 5b0b6c1..5bf3b4e 100644 --- a/NetStone/Model/Parseables/Character/Collectable/CharacterCollectableEntry.cs +++ b/NetStone/Model/Parseables/Character/Collectable/CharacterCollectableEntry.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.Collectable; @@ -15,7 +15,7 @@ public class CharacterCollectableEntry : LodestoneParseable /// /// Root node for entry /// Parse definition - public CharacterCollectableEntry(HtmlNode rootNode, CharacterCollectableDefinition definition) : base(rootNode) + public CharacterCollectableEntry(IElement rootNode, CharacterCollectableDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/FreeCompanySocialGroup.cs b/NetStone/Model/Parseables/Character/FreeCompanySocialGroup.cs index 7f95f80..09c0321 100644 --- a/NetStone/Model/Parseables/Character/FreeCompanySocialGroup.cs +++ b/NetStone/Model/Parseables/Character/FreeCompanySocialGroup.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; using NetStone.Model.Parseables.FreeCompany; @@ -18,7 +18,7 @@ public class FreeCompanySocialGroup : SocialGroup /// /// /// - public FreeCompanySocialGroup(LodestoneClient client, HtmlNode rootNode, + public FreeCompanySocialGroup(LodestoneClient client, IElement rootNode, ICharacterSocialGroupDefinition socialGroupDefinition) : base(rootNode, socialGroupDefinition) { this.client = client; diff --git a/NetStone/Model/Parseables/Character/Gear/CharacterGear.cs b/NetStone/Model/Parseables/Character/Gear/CharacterGear.cs index 913ac5f..afcbcbf 100644 --- a/NetStone/Model/Parseables/Character/Gear/CharacterGear.cs +++ b/NetStone/Model/Parseables/Character/Gear/CharacterGear.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables.Character.Gear; @@ -17,7 +17,7 @@ public class CharacterGear : LodestoneParseable /// /// /// - public CharacterGear(LodestoneClient client, HtmlNode rootNode, CharacterGearDefinition definition) : base(rootNode) + public CharacterGear(LodestoneClient client, IElement rootNode, CharacterGearDefinition definition) : base(rootNode) { this.client = client; this.definition = definition; diff --git a/NetStone/Model/Parseables/Character/Gear/GearEntry.cs b/NetStone/Model/Parseables/Character/Gear/GearEntry.cs index efc8eea..a084e8c 100644 --- a/NetStone/Model/Parseables/Character/Gear/GearEntry.cs +++ b/NetStone/Model/Parseables/Character/Gear/GearEntry.cs @@ -1,6 +1,6 @@ using System; using System.Linq; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; using NetStone.GameData; @@ -27,7 +27,7 @@ public class GearEntry : LodestoneParseable, IOptionalParseable /// Lodestone client /// Entry node /// Parser definition - public GearEntry(LodestoneClient client, HtmlNode rootNode, GearEntryDefinition definition) : base(rootNode) + public GearEntry(LodestoneClient client, IElement rootNode, GearEntryDefinition definition) : base(rootNode) { this.client = client; this.definition = definition; diff --git a/NetStone/Model/Parseables/Character/Gear/SoulcrystalEntry.cs b/NetStone/Model/Parseables/Character/Gear/SoulcrystalEntry.cs index cd0cea5..d2f63f4 100644 --- a/NetStone/Model/Parseables/Character/Gear/SoulcrystalEntry.cs +++ b/NetStone/Model/Parseables/Character/Gear/SoulcrystalEntry.cs @@ -1,7 +1,5 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; -using NetStone.Search.FreeCompany; -using System; namespace NetStone.Model.Parseables.Character.Gear; @@ -13,7 +11,7 @@ public class SoulcrystalEntry : LodestoneParseable, IOptionalParseable - public SoulcrystalEntry(HtmlNode rootNode, SoulcrystalEntryDefinition definition) : base(rootNode) + public SoulcrystalEntry(IElement rootNode, SoulcrystalEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Character/LodestoneCharacter.cs b/NetStone/Model/Parseables/Character/LodestoneCharacter.cs index 9ea2450..21b06c7 100644 --- a/NetStone/Model/Parseables/Character/LodestoneCharacter.cs +++ b/NetStone/Model/Parseables/Character/LodestoneCharacter.cs @@ -1,7 +1,7 @@ using System; using System.Text.RegularExpressions; using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions; using NetStone.Definitions.Model.Character; using NetStone.Model.Parseables.Character.Achievement; @@ -41,7 +41,7 @@ public class LodestoneCharacter : LodestoneParseable /// The root document node of the page. /// The holding definitions to be used to access data. /// The ID of the character. - public LodestoneCharacter(LodestoneClient client, HtmlNode rootNode, DefinitionsContainer container, string charId) + public LodestoneCharacter(LodestoneClient client, IElement rootNode, DefinitionsContainer container, string charId) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/FreeCompany/FreeCompanyEstate.cs b/NetStone/Model/Parseables/FreeCompany/FreeCompanyEstate.cs index 6ff0106..5f958dc 100644 --- a/NetStone/Model/Parseables/FreeCompany/FreeCompanyEstate.cs +++ b/NetStone/Model/Parseables/FreeCompany/FreeCompanyEstate.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany; @@ -11,7 +11,7 @@ public class FreeCompanyEstate : LodestoneParseable, IOptionalParseable - public FreeCompanyEstate(HtmlNode rootNode, EstateDefinition definition) : base(rootNode) + public FreeCompanyEstate(IElement rootNode, EstateDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocus.cs b/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocus.cs index 3ad8b6a..6bf2037 100644 --- a/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocus.cs +++ b/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocus.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany; @@ -11,7 +11,7 @@ public class FreeCompanyFocus : LodestoneParseable, IOptionalParseable - public FreeCompanyFocus(HtmlNode rootNode, FreeCompanyFocusDefinition definition) : base(rootNode) + public FreeCompanyFocus(IElement rootNode, FreeCompanyFocusDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocusEntry.cs b/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocusEntry.cs index ea897fd..6ed47e7 100644 --- a/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocusEntry.cs +++ b/NetStone/Model/Parseables/FreeCompany/FreeCompanyFocusEntry.cs @@ -1,5 +1,5 @@ using System; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany; @@ -16,7 +16,7 @@ public class FreeCompanyFocusEntry : LodestoneParseable /// /// Node that contains relevant data /// Parse definition - public FreeCompanyFocusEntry(HtmlNode rootNode, FreeCompanyFocusEntryDefinition definition) : base(rootNode) + public FreeCompanyFocusEntry(IElement rootNode, FreeCompanyFocusEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputation.cs b/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputation.cs index 516cb3d..a337418 100644 --- a/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputation.cs +++ b/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputation.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; using NetStone.StaticData; @@ -19,7 +18,7 @@ public class FreeCompanyReputation : LodestoneParseable /// /// /// - public FreeCompanyReputation(HtmlNode rootNode, FreeCompanyReputationDefinition definition) : base(rootNode) + public FreeCompanyReputation(IElement rootNode, FreeCompanyReputationDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputationEntry.cs b/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputationEntry.cs index 007d175..56e418a 100644 --- a/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputationEntry.cs +++ b/NetStone/Model/Parseables/FreeCompany/FreeCompanyReputationEntry.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany; @@ -15,7 +15,7 @@ public class FreeCompanyReputationEntry : LodestoneParseable /// /// /// - public FreeCompanyReputationEntry(HtmlNode rootNode, FreeCompanyReputationEntryDefinition definition) : + public FreeCompanyReputationEntry(IElement rootNode, FreeCompanyReputationEntryDefinition definition) : base(rootNode) { this.definition = definition; diff --git a/NetStone/Model/Parseables/FreeCompany/LodestoneFreeCompany.cs b/NetStone/Model/Parseables/FreeCompany/LodestoneFreeCompany.cs index db202a8..ba5d832 100644 --- a/NetStone/Model/Parseables/FreeCompany/LodestoneFreeCompany.cs +++ b/NetStone/Model/Parseables/FreeCompany/LodestoneFreeCompany.cs @@ -1,10 +1,9 @@ using System; using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions; using NetStone.Definitions.Model.FreeCompany; using NetStone.Model.Parseables.FreeCompany.Members; -using NetStone.Search.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany; @@ -26,7 +25,7 @@ public class LodestoneFreeCompany : LodestoneParseable /// Root node of FC page /// Parser definitions /// Id of FC - public LodestoneFreeCompany(LodestoneClient client, HtmlNode rootNode, DefinitionsContainer definitions, string id) + public LodestoneFreeCompany(LodestoneClient client, IElement rootNode, DefinitionsContainer definitions, string id) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembers.cs b/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembers.cs index 638c802..3360d58 100644 --- a/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembers.cs +++ b/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembers.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Definitions.Model.FreeCompany; @@ -17,7 +17,7 @@ public class FreeCompanyMembers : PaginatedIdResult /// /// - public FreeCompanyMembers(LodestoneClient client, HtmlNode rootNode, PagedDefinition definition, string id) : + public FreeCompanyMembers(LodestoneClient client, IElement rootNode, PagedDefinition definition, string id) : base(rootNode, definition, client.GetFreeCompanyMembers, id) { } diff --git a/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembersEntry.cs b/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembersEntry.cs index ddc91d1..a4bb31a 100644 --- a/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembersEntry.cs +++ b/NetStone/Model/Parseables/FreeCompany/Members/FreeCompanyMembersEntry.cs @@ -1,5 +1,5 @@ using System; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; namespace NetStone.Model.Parseables.FreeCompany.Members; @@ -12,7 +12,7 @@ public class FreeCompanyMembersEntry : LodestoneParseable private readonly FreeCompanyMembersEntryDefinition definition; /// - public FreeCompanyMembersEntry(HtmlNode rootNode, FreeCompanyMembersEntryDefinition definition) : base(rootNode) + public FreeCompanyMembersEntry(IElement rootNode, FreeCompanyMembersEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/IconLayers.cs b/NetStone/Model/Parseables/IconLayers.cs index 60e4ea4..5b0ff25 100644 --- a/NetStone/Model/Parseables/IconLayers.cs +++ b/NetStone/Model/Parseables/IconLayers.cs @@ -1,5 +1,5 @@ using System; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; namespace NetStone.Model.Parseables; @@ -12,7 +12,7 @@ public class IconLayers : LodestoneParseable private readonly IconLayersDefinition definition; /// - public IconLayers(HtmlNode rootNode, IconLayersDefinition definition) : base(rootNode) + public IconLayers(IElement rootNode, IconLayersDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Linkshell/LodestoneLinkshell.cs b/NetStone/Model/Parseables/Linkshell/LodestoneLinkshell.cs index fdd335e..d89edde 100644 --- a/NetStone/Model/Parseables/Linkshell/LodestoneLinkshell.cs +++ b/NetStone/Model/Parseables/Linkshell/LodestoneLinkshell.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions; using NetStone.Definitions.Model.Linkshell; using NetStone.Model.Parseables.Linkshell.Members; @@ -20,7 +20,7 @@ public class LodestoneLinkshell : PaginatedIdResultThe root document node of the page. /// The holding definitions to be used to access data. /// The ID of the cross world linkshell. - public LodestoneLinkshell(LodestoneClient client, HtmlNode rootNode, DefinitionsContainer container, string id) : base(rootNode,container.LinkshellMember, client.GetLinkshell,id) + public LodestoneLinkshell(LodestoneClient client, IElement rootNode, DefinitionsContainer container, string id) : base(rootNode,container.LinkshellMember, client.GetLinkshell,id) { this.lsDefinition = container.Linkshell; } diff --git a/NetStone/Model/Parseables/Linkshell/Members/LinkshellMemberEntry.cs b/NetStone/Model/Parseables/Linkshell/Members/LinkshellMemberEntry.cs index 7e25762..0b2c41e 100644 --- a/NetStone/Model/Parseables/Linkshell/Members/LinkshellMemberEntry.cs +++ b/NetStone/Model/Parseables/Linkshell/Members/LinkshellMemberEntry.cs @@ -1,4 +1,4 @@ -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Linkshell; namespace NetStone.Model.Parseables.Linkshell.Members; @@ -14,7 +14,7 @@ public class LinkshellMemberEntry : LodestoneParseable /// /// Root html node of this entry /// Css and regex definition - public LinkshellMemberEntry(HtmlNode rootNode, LinkshellMemberEntryDefinition definition) : base(rootNode) + public LinkshellMemberEntry(IElement rootNode, LinkshellMemberEntryDefinition definition) : base(rootNode) { this.definition = definition; } diff --git a/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchEntry.cs b/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchEntry.cs index d41dd4c..ef04248 100644 --- a/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchEntry.cs +++ b/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchEntry.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.CWLS; using NetStone.Model.Parseables.CWLS; @@ -14,7 +14,7 @@ public class CrossworldLinkshellSearchEntry : LodestoneParseable private readonly CrossworldLinkshellSearchEntryDefinition definition; /// - public CrossworldLinkshellSearchEntry(LodestoneClient client, HtmlNode rootNode, CrossworldLinkshellSearchEntryDefinition definition) : + public CrossworldLinkshellSearchEntry(LodestoneClient client, IElement rootNode, CrossworldLinkshellSearchEntryDefinition definition) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchPage.cs b/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchPage.cs index d4db614..7f0c06b 100644 --- a/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchPage.cs +++ b/NetStone/Model/Parseables/Search/CWLS/CrossworldLinkshellSearchPage.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Definitions.Model.CWLS; using NetStone.Search.Linkshell; @@ -21,7 +21,7 @@ public class CrossworldLinkshellSearchPage /// /// /// - public CrossworldLinkshellSearchPage(LodestoneClient client, HtmlNode rootNode, + public CrossworldLinkshellSearchPage(LodestoneClient client, IElement rootNode, PagedDefinition pageDefinition, CrossworldLinkshellSearchQuery currentQuery) : base(rootNode, pageDefinition, client.SearchCrossworldLinkshell, currentQuery) diff --git a/NetStone/Model/Parseables/Search/Character/CharacterSearchEntry.cs b/NetStone/Model/Parseables/Search/Character/CharacterSearchEntry.cs index 0663cbd..04471d6 100644 --- a/NetStone/Model/Parseables/Search/Character/CharacterSearchEntry.cs +++ b/NetStone/Model/Parseables/Search/Character/CharacterSearchEntry.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; using NetStone.Model.Parseables.Character; @@ -14,7 +14,7 @@ public class CharacterSearchEntry : LodestoneParseable private readonly CharacterSearchEntryDefinition definition; /// - public CharacterSearchEntry(LodestoneClient client, HtmlNode rootNode, CharacterSearchEntryDefinition definition) : + public CharacterSearchEntry(LodestoneClient client, IElement rootNode, CharacterSearchEntryDefinition definition) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/Search/Character/CharacterSearchPage.cs b/NetStone/Model/Parseables/Search/Character/CharacterSearchPage.cs index 252fb25..dd65c88 100644 --- a/NetStone/Model/Parseables/Search/Character/CharacterSearchPage.cs +++ b/NetStone/Model/Parseables/Search/Character/CharacterSearchPage.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Definitions.Model.Character; using NetStone.Search.Character; @@ -21,7 +21,7 @@ public class CharacterSearchPage : PaginatedSearchResult /// /// - public CharacterSearchPage(LodestoneClient client, HtmlNode rootNode, + public CharacterSearchPage(LodestoneClient client, IElement rootNode, PagedDefinition pageDefinition, CharacterSearchQuery currentQuery) : base(rootNode, pageDefinition, client.SearchCharacter, currentQuery) diff --git a/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchEntry.cs b/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchEntry.cs index 063c4eb..1fe44b1 100644 --- a/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchEntry.cs +++ b/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchEntry.cs @@ -1,6 +1,6 @@ using System; using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.FreeCompany; using NetStone.Model.Parseables.FreeCompany; using NetStone.Search.FreeCompany; @@ -16,7 +16,7 @@ public class FreeCompanySearchEntry : LodestoneParseable private readonly FreeCompanySearchEntryDefinition definition; /// - public FreeCompanySearchEntry(LodestoneClient client, HtmlNode rootNode, + public FreeCompanySearchEntry(LodestoneClient client, IElement rootNode, FreeCompanySearchEntryDefinition definition) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchPage.cs b/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchPage.cs index 635e9d8..4a88b8f 100644 --- a/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchPage.cs +++ b/NetStone/Model/Parseables/Search/FreeCompany/FreeCompanySearchPage.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Definitions.Model.FreeCompany; using NetStone.Search.FreeCompany; @@ -21,7 +21,7 @@ public class FreeCompanySearchPage : PaginatedSearchResult /// /// - public FreeCompanySearchPage(LodestoneClient client, HtmlNode rootNode, + public FreeCompanySearchPage(LodestoneClient client, IElement rootNode, PagedDefinition pageDefinition, FreeCompanySearchQuery currentQuery) : base(rootNode, pageDefinition, client.SearchFreeCompany, currentQuery) diff --git a/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchEntry.cs b/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchEntry.cs index 37a30db..8676789 100644 --- a/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchEntry.cs +++ b/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchEntry.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Linkshell; using NetStone.Model.Parseables.Linkshell; @@ -14,7 +14,7 @@ public class LinkshellSearchEntry : LodestoneParseable private readonly LinkshellSearchEntryDefinition definition; /// - public LinkshellSearchEntry(LodestoneClient client, HtmlNode rootNode, LinkshellSearchEntryDefinition definition) : + public LinkshellSearchEntry(LodestoneClient client, IElement rootNode, LinkshellSearchEntryDefinition definition) : base(rootNode) { this.client = client; diff --git a/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchPage.cs b/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchPage.cs index 5040388..5aa8bf8 100644 --- a/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchPage.cs +++ b/NetStone/Model/Parseables/Search/Linkshell/LinkshellSearchPage.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model; using NetStone.Definitions.Model.Linkshell; using NetStone.Search.Linkshell; @@ -21,7 +21,7 @@ public class LinkshellSearchPage : PaginatedSearchResult /// /// - public LinkshellSearchPage(LodestoneClient client, HtmlNode rootNode, + public LinkshellSearchPage(LodestoneClient client, IElement rootNode, PagedDefinition pageDefinition, LinkshellSearchQuery currentQuery) : base(rootNode, pageDefinition, client.SearchLinkshell, currentQuery) diff --git a/NetStone/Model/Parseables/SocialGroup.cs b/NetStone/Model/Parseables/SocialGroup.cs index 7e2230d..d8e5485 100644 --- a/NetStone/Model/Parseables/SocialGroup.cs +++ b/NetStone/Model/Parseables/SocialGroup.cs @@ -1,5 +1,5 @@ using System; -using HtmlAgilityPack; +using AngleSharp.Dom; using NetStone.Definitions.Model.Character; namespace NetStone.Model.Parseables; @@ -12,7 +12,7 @@ public class SocialGroup : LodestoneParseable, IOptionalParseable private readonly ICharacterSocialGroupDefinition definition; /// - public SocialGroup(HtmlNode rootNode, ICharacterSocialGroupDefinition socialGroupDefinition) : base(rootNode) + public SocialGroup(IElement rootNode, ICharacterSocialGroupDefinition socialGroupDefinition) : base(rootNode) { this.definition = socialGroupDefinition; } diff --git a/NetStone/NetStone.csproj b/NetStone/NetStone.csproj index b104e45..c53b39f 100644 --- a/NetStone/NetStone.csproj +++ b/NetStone/NetStone.csproj @@ -35,8 +35,7 @@ - - + diff --git a/NetStone/NetStone.xml b/NetStone/NetStone.xml index 22f2ad4..edf2b93 100644 --- a/NetStone/NetStone.xml +++ b/NetStone/NetStone.xml @@ -40,6 +40,16 @@ Gear definitions for character + + + Definition for character gear entry (single slot) + + + + + Definition for character soul crystal entry + + Definitions for a character's attribute @@ -798,6 +808,26 @@ Name of the item + + + List of classes that can use this item + + + + + Item level + + + + + Definition for gear data link + + + + + Data link definition + + Definition for all gear of the character @@ -1898,7 +1928,7 @@ The request failed due to an underlying issue such as network connectivity, DNS failure, server certificate validation or timeout. containing search results. - + Get the instantiated LodestoneParseable if the request succeeded, or null in case of StatusCode.NotFound. @@ -1961,7 +1991,7 @@ Container class holding paginated information - + @@ -1969,7 +1999,7 @@ Container class holding paginated information - + @@ -1982,7 +2012,7 @@ Definition for the paginated type - + @@ -2025,7 +2055,7 @@ The HTML document's root node. - + Constructs an instance of parseable data for given node @@ -2033,14 +2063,14 @@ - Query a via pack selector. + Query a via pack selector. Definition of the node. The needed node. - Query all ChildNodes of a via pack selector. + Query all ChildNodes of a via pack selector. Removes unneeded "#text" nodes. Definition of the node. @@ -2162,7 +2192,7 @@ Models data for one Achievement this character earned - + Create instance of achievement entry fpr given node @@ -2197,7 +2227,7 @@ Holds information about a characters unlocked achievements - + Creates a new instance retrieving information about a characters unlocked achievements @@ -2229,7 +2259,7 @@ Provides information about a characters attributes - + Creates an instance that provides Attributes for given node @@ -2368,7 +2398,7 @@ Information about all classes for a character - + Creates ClassJobs data for the character represented by the Lodestone page @@ -2560,7 +2590,7 @@ Entry for Bozja Field Operation of a character - + Constructs a new class entry @@ -2608,7 +2638,7 @@ Entry for one class/job of a character - + Constructs a new class entry @@ -2671,7 +2701,7 @@ Entry for Eureka Field Operation of a character - + Constructs a new class entry @@ -2729,7 +2759,7 @@ Models a collection of collectables for characters - + Constructs a collectable collection @@ -2746,7 +2776,7 @@ Entry for collectable collection - + Constructs one collectable entry @@ -2769,7 +2799,7 @@ Models a Free Company entry on the character profile - + Constructs FC entry for profile page @@ -2788,7 +2818,7 @@ Container class holding information about a character's equipped gear. - + Constructs parser for character gear @@ -2876,7 +2906,7 @@ Character representing the high quality symbol - + Construct a new gear entry @@ -2956,7 +2986,7 @@ Represents data about a character's soul crystal - + @@ -2985,7 +3015,7 @@ Unicode character used to represent male characters - + Container class for a parseable character page. @@ -3099,7 +3129,7 @@ The town of the character. - + The character gear information. @@ -3144,7 +3174,7 @@ Container class holding information about a cross world linkshell and it's members. - + Container class for a parseable corss world linkshell page. @@ -3176,7 +3206,7 @@ Container class holding information about a cross-world linkshell member. - + Create instance of member entry for a given node @@ -3228,7 +3258,7 @@ Information about the Free CCompany's estate - + @@ -3254,7 +3284,7 @@ Infomation about the content this FC focuses on - + @@ -3315,7 +3345,7 @@ Data about one type of Free Company focus - + Construct instance to parse focus @@ -3342,7 +3372,7 @@ Information on free companies - + Creates Free Company reputation information @@ -3382,7 +3412,7 @@ Models reputation of a Free Company with on Grand Company - + Constructs FC reputation with on GC @@ -3409,7 +3439,7 @@ Provides information of a Free Company - + Constructs Free Company information parser @@ -3514,7 +3544,7 @@ Information about a Free Company's members - + Constructs member list @@ -3536,7 +3566,7 @@ Models one entry for the Free Company member list - + @@ -3589,7 +3619,7 @@ Container class holding information about a social group's icon. - + @@ -3612,7 +3642,7 @@ Container class holding information about a linkshell and it's members. - + Container class for a parseable linkshell page. @@ -3639,7 +3669,7 @@ Container class holding information about a linkshell member. - + Create instance of member entry for a given node @@ -3691,7 +3721,7 @@ Models one entry in the character search results list - + @@ -3718,7 +3748,7 @@ Models character search results - + Constructs character search results @@ -3740,7 +3770,7 @@ Models one entry in the cwls search results list - + @@ -3777,7 +3807,7 @@ Models cross world link shell search results - + Constructs character search results @@ -3799,7 +3829,7 @@ Models on entry of the free company search results - + @@ -3876,7 +3906,7 @@ Models Free Company search results - + Constructs Free Company Search results @@ -3898,7 +3928,7 @@ Models one entry in the linkshell search results list - + @@ -3935,7 +3965,7 @@ Models link shell search results - + Constructs character search results @@ -3957,7 +3987,7 @@ Models a group of players/characters - +