public override IEnumerable <DataObject> ProcessInternal(ClientBase client, ResponseContainer container) { HtmlDocument doc = container.ResponseHtml.Value; HtmlNodeCollection imageFields = doc.DocumentNode.SelectNodes("//div[starts-with(@id, 'fleet')]"); if (imageFields == null) { yield break; } FleetSlotCount count = new FleetSlotCount(); HtmlNode slots = doc.DocumentNode.SelectSingleNode("//div[@id='content']//div[@class='fleetStatus']/span[@class='fleetSlots']"); count.Current = int.Parse(slots.SelectSingleNode("./span[@class='current']").InnerText); count.Max = int.Parse(slots.SelectSingleNode("./span[@class='all']").InnerText); yield return(count); foreach (HtmlNode node in imageFields) { string idText = node.GetAttributeValue("id", null); int id = int.Parse(FleetIdRegex.Match(idText).Groups[1].Value, NumberStyles.AllowThousands | NumberStyles.Integer, client.ServerCulture); FleetMissionDetails missionDetails = FleetUtilityParser.ParseFleetMissionDetails(node); HtmlNode fleetInfo = node.SelectSingleNode(".//span[@class='starStreak']"); FleetComposition composition = FleetUtilityParser.ParseFleetInfoTable((OGameClient)client, fleetInfo); FleetEndpointInfo endpointOrigin = ParseEndpoint(node.SelectSingleNode("./span[@class='originData']")); FleetEndpointInfo endpointDestination = ParseEndpoint(node.SelectSingleNode("./span[@class='destinationData']")); yield return(new FleetInfo { Id = id, ArrivalTime = missionDetails.ArrivalTime, IsReturning = missionDetails.IsReturn, MissionType = missionDetails.Mission, Origin = endpointOrigin, Destination = endpointDestination, Composition = composition }); } }
public override IEnumerable <DataObject> ProcessInternal(ClientBase client, ResponseContainer container) { HtmlDocument doc = container.ResponseHtml.Value; HtmlNodeCollection imageFields = doc.DocumentNode.SelectNodes("//div[starts-with(@id, 'fleet')]"); if (imageFields == null) { yield break; } foreach (HtmlNode node in imageFields) { string idText = node.GetAttributeValue("id", null); int id = int.Parse(FleetIdRegex.Match(idText).Groups[1].Value, NumberStyles.AllowThousands | NumberStyles.Integer, client.ServerCulture); MissionType missionType = (MissionType)node.GetAttributeValue("data-mission-type", 0); bool isReturn = node.GetAttributeValue("data-return-flight", false); int arrivalSec = node.GetAttributeValue("data-arrival-time", 0); DateTimeOffset arrival = DateTimeOffset.FromUnixTimeSeconds(arrivalSec); HtmlNode fleetInfo = node.SelectSingleNode(".//span[@class='starStreak']"); FleetComposition composition = FleetCompositionParser.ParseFleetInfoTable((OGameClient)client, fleetInfo); FleetEndpointInfo endpointOrigin = ParseEndpoint(node.SelectSingleNode("./span[@class='originData']")); FleetEndpointInfo endpointDestination = ParseEndpoint(node.SelectSingleNode("./span[@class='destinationData']")); yield return(new FleetInfo { Id = id, ArrivalTime = arrival, IsReturning = isReturn, MissionType = missionType, Origin = endpointOrigin, Destination = endpointDestination, Composition = composition }); } }