private static void FillDataTable(object sender, DoWorkEventArgs args) { #if DESIGN FillDataTableArg arg = (FillDataTableArg)args.Argument; int sum = 0; for (int i = 0; i < 10; i++) { bool charKos = i % 3 == 2; bool corporationKos = i % 5 == 4; bool allianceKos = i % 7 == 6; bool kos = charKos || corporationKos || allianceKos; DataRow dataRow = arg.Table.NewRow(); dataRow[0] = "character #" + i; dataRow[1] = charKos; dataRow[2] = "Corporation #" + i; dataRow[3] = corporationKos; dataRow[4] = "Alliance #" + i; dataRow[5] = allianceKos; dataRow[6] = kos; arg.Table.Rows.Add(dataRow); if (kos) { ++sum; } } args.Result = sum; #else args.Result = KosChecker.FillDataTable((FillDataTableArg)args.Argument); #endif }
public static int FillDataTable(FillDataTableArg arg) { if (_Api == null) { _Api = new EveApi("eve-log-watcher", 4488664, "GvRnlFE0G2r3yX2OzHzzldNEN0BSx9DGJQgebKgfuzRO8vmrV8WVY3u3lqLadAZ8"); } List <CharacterInfo> characters = new List <CharacterInfo>(); List <string> unknowns = new List <string>(); foreach (string name in arg.Names) { CharacterInfo characterInfo; if (!_KnownCharacters.TryGetValue(name, out characterInfo)) { unknowns.Add(name); } else { characters.Add(characterInfo); } } if (unknowns.Count > 0) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://kos.cva-eve.org/api/?c=json&type=multi&q=" + string.Join(",", unknowns)); JObject jObject; using (WebResponse response = request.GetResponse()) { using (Stream stream = response.GetResponseStream()) { Debug.Assert(stream != null); using (StreamReader reader = new StreamReader(stream)) { using (JsonTextReader jReader = new JsonTextReader(reader)) { jObject = JObject.Load(jReader); } } } } JToken jMessage = jObject["message"]; if (jMessage.Value <string>() != "OK") { throw new Exception("error message from kos.cva-eve.org: " + jMessage.Value <string>()); } JArray jResults = (JArray)jObject["results"]; foreach (JToken jResult in jResults) { CharacterInfo info = new CharacterInfo(jResult); _KnownCharacters.Add(info.PilotName, info); characters.Add(info); } unknowns = unknowns.Where(o => !_KnownCharacters.ContainsKey(o)).ToList(); } int kosCounter = 0; foreach (CharacterInfo characterInfo in characters) { DataRow dataRow = arg.Table.NewRow(); characterInfo.FillDataRow(dataRow); if (characterInfo.Kos) { kosCounter++; } arg.Table.Rows.Add(dataRow); } foreach (string unknown in unknowns) { DataRow dataRow = arg.Table.NewRow(); dataRow[0] = unknown; dataRow[2] = "???"; arg.Table.Rows.Add(dataRow); } return(kosCounter); }