コード例 #1
0
        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
        }
コード例 #2
0
            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);
            }