public override void Matched(MatchCollection matches, uint posterID, uint victimID, DateTime now, MySqlConnection con, SingleNewscanRequestHandler handler, ParserResponse resp) { foreach (Match m in matches) { String url = m.Value+"&typ=xml"; XmlNode xml = IWCache.Query(url, con, DBPrefix); if (xml.SelectSingleNode("scann/informationen/vollstaendig").InnerText != "1") { resp.Respond("Ein Scan war nicht vollständig!"); continue; } switch (xml.SelectSingleNode("scann/scann_typ/id").InnerText) { case "1": //Sondierung (Geologie) GeoScan scan = GeoScan.Parse(xml, DBPrefix, handler.BesData); if (scan == null) { resp.RespondError("Beim Einlesen eines Geoscans ist ein Fehler aufgetreten!\n"); continue; } scan.ToDB(con); resp.Respond("Geoscan eingelesen!\n"); break; case "2": //Sondierung (Gebäude/Ress) GebScan s = new GebScan(uint.Parse(m.Groups[1].Value), m.Groups[2].Value); s.LoadXml(xml, warFilter); if (s.ToDB(con, DBPrefix, warFilter.TechKostenCache)) { resp.Respond("Gebäudescan eingelesen!\n"); } else { resp.Respond("Gebäudescan übersprungen!\n"); } break; case "3": //Sondierung (Schiffe/Def/Ress) SchiffScan schiffScan = new SchiffScan(uint.Parse(m.Groups[1].Value), m.Groups[2].Value); schiffScan.LoadXml(xml, warFilter); if(schiffScan.ToDB(con, DBPrefix, warFilter.TechKostenCache)) { resp.Respond("Schiffscan eingelesen!\n"); } else { resp.Respond("Schiffscan übersprungen!\n"); } break; } } }
public static IWScan LoadXml(MySqlConnection con, String DBPrefix, WarFilter filter, uint iwid, string iwhash) { String url = String.Format("http://www.icewars.de/portal/kb/de/sb.php?id={0}&md_hash={1}&typ=xml", iwid, iwhash); XmlNode xml = IWCache.Query(url, con, DBPrefix); switch (xml.SelectSingleNode("scann/scann_typ/id").InnerText) { case "2": { //Sondierung (Gebäude/Ress) GebScan s = new GebScan(iwid, iwhash); s.LoadXml(xml, filter); return s; } case "3": { //Sondierung (Schiffe/Def/Ress) SchiffScan s = new SchiffScan(iwid, iwhash); s.LoadXml(xml, filter); return s; } } throw new InvalidOperationException("Unbekannter Scan-Typ!"); }