示例#1
0
        private async Task <CalendarStatus> GetRawEvents()
        {
            //Call Google Calendar API
            var yesterdayDateTime = DateTime.Now.Date;//DateTime.Now.AddDays(-1);
            var minDateString     = yesterdayDateTime.ToString("O");

            var currentCalendar = new CalendarStatus();

            using (var httpRequest = new Windows.Web.Http.HttpRequestMessage())
            {
                var    client      = new Windows.Web.Http.HttpClient();
                string calendarAPI = $"https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?timeMin={minDateString}";

                httpRequest.Method                = Windows.Web.Http.HttpMethod.Get;
                httpRequest.RequestUri            = new Uri(calendarAPI);
                httpRequest.Headers.Authorization = new Windows.Web.Http.Headers.HttpCredentialsHeaderValue("Bearer", this.accessToken);

                var response = await client.SendRequestAsync(httpRequest);

                if (response.IsSuccessStatusCode)
                {
                    var listString = await response.Content.ReadAsStringAsync();

                    currentCalendar.AddRawCalendarItems(listString, "personal");
                }
                else
                {
                    var errorRaw = await response.Content.ReadAsStringAsync();

                    dynamic jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject(errorRaw);

                    dynamic error        = jsonObject.error;
                    dynamic errors       = error.errors;
                    dynamic firstItem    = errors[0];
                    dynamic reasonObject = firstItem.reason;
                    string  reason       = reasonObject.Value;

                    if (reason == "authError")
                    {
                        throw new Exception();
                    }
                }
            }

            using (var httpRequest = new Windows.Web.Http.HttpRequestMessage())
            {
                var    client             = new Windows.Web.Http.HttpClient();
                string holydayCalendarAPI =
                    $"https://www.googleapis.com/calendar/v3/calendars/{this.holydaysCalendarId}/events?timeMin={minDateString}";

                httpRequest.Method                = Windows.Web.Http.HttpMethod.Get;
                httpRequest.RequestUri            = new Uri(holydayCalendarAPI);
                httpRequest.Headers.Authorization =
                    new Windows.Web.Http.Headers.HttpCredentialsHeaderValue("Bearer", this.accessToken);

                var holidayresponse = await client.SendRequestAsync(httpRequest);

                if (holidayresponse.IsSuccessStatusCode)
                {
                    var listString = await holidayresponse.Content.ReadAsStringAsync();

                    currentCalendar.AddRawCalendarItems(listString, "public");
                }
                else
                {
                    var errorRaw = await holidayresponse.Content.ReadAsStringAsync();

                    dynamic jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject(errorRaw);

                    dynamic error        = jsonObject.error;
                    dynamic errors       = error.errors;
                    dynamic firstItem    = errors[0];
                    dynamic reasonObject = firstItem.reason;
                    string  reason       = reasonObject.Value;

                    if (reason == "authError")
                    {
                        throw new Exception();
                    }
                }
            }

            return(currentCalendar);
        }