コード例 #1
0
        public void SerializeContestTest()
        {
            var contestList =
                ContestList.FromXml <ContestList>(this.GetContestText());
            var xmlRootOverride = new XmlRootAttribute("Contests");

            string contestXml = ContestList.Serialize(
                contestList, xmlRootOverride);

            Assert.AreEqual(this.GetContestText(), contestXml, contestXml);

            var contest = new Contest();

            contest.Id      = 1;
            contest.Name    = "King";
            contest.VoteFor = 2;

            var newList = new ContestList();

            newList.Add(contest);
            contestXml = ContestList.Serialize(newList, xmlRootOverride);
            Assert.IsNotNull(contestXml);
        }
コード例 #2
0
        private async Task Query()
        {
            ContentDialog msg = new ContentDialog();

            msg.Title   = "Request to codeforces...";
            msg.Content = new ProgressRing()
            {
                IsActive            = true,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch
            };

            msg.ShowAsync();

            DateTime now = DateTime.UtcNow;
            DateTime old = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

            list.Clear();
            HttpClient httpClient = new HttpClient();
            Uri        request;

            try
            {
                request = new Uri("https://codeforces.com/api/contest.list?");
            }
            catch (Exception ex) {
                msg.Hide();
                await new MessageDialog(string.Format("{0}", ex.Message)).ShowAsync();
                return;
            }

            HttpResponseMessage httpResponse = new HttpResponseMessage();
            string httpResponseBody          = "";

            try
            {
                httpResponse = await httpClient.GetAsync(request);

                httpResponse.EnsureSuccessStatusCode();
                httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {
                msg.Hide();
                await new MessageDialog(string.Format("{0}", ex.Message)).ShowAsync();
                return;
            }
            JsonObject jobject = new JsonObject();
            JsonArray  result  = new JsonArray();

            try
            {
                jobject = JsonObject.Parse(httpResponseBody);
                result  = jobject["result"].GetArray();
            }
            catch (Exception ex)
            {
                msg.Hide();
                await new MessageDialog(string.Format("{0}", ex.Message)).ShowAsync();
                return;
            }

            foreach (JsonValue i in result)
            {
                Contest contest = JsonConvert.DeserializeObject <Contest>(i.ToString());
                if (now <= old.AddSeconds(contest.startTimeSeconds + contest.durationSeconds))
                {
                    contest.startDate     = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(contest.startTimeSeconds);
                    contest.startDate     = contest.startDate.ToLocalTime();
                    contest.startDate_str = contest.startDate.ToString("MM dd HH:mm");
                    mys.Push(contest);
                }
                else
                {
                    break;
                }
            }
            while (mys.Count != 0)
            {
                Contest contest = mys.Pop();
                list.Add(contest);
            }
            msg.Hide();

            if (list.Count == 0)
            {
                await new MessageDialog("No Contest Available")
                {
                    Title = "-_-...."
                }.ShowAsync();
            }
        }