public static async Task <List <EventImage> > GetEventAttachmentsAsync(string id, EventImage inputEventImage, string contentType, string contentHtml) { var attachments = new List <EventImage>(); JObject jResult = null; try { HttpClient client = new HttpClient(); var token = await AuthenticationHelper.GetTokenForUserAsync(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); Uri usersEndpoint = new Uri(serviceEndpoint + "me/events/" + id + "/attachments"); HttpResponseMessage response = await client.GetAsync(usersEndpoint); if (response.IsSuccessStatusCode) { string responseContent = await response.Content.ReadAsStringAsync(); jResult = JObject.Parse(responseContent); foreach (JObject attachment in jResult["value"]) { string name = (string)attachment["name"]; string type = (string)attachment["contentType"]; int size = (int)attachment["size"]; bool isInline = (bool)attachment["isInline"]; string content = (string)attachment["contentBytes"]; if (string.Equals(type, "image/jpeg", StringComparison.OrdinalIgnoreCase)) { if (content != null) { byte[] contentArray = Convert.FromBase64String(content); MemoryStream ms = new MemoryStream(); if (ms != null) { ms.Write(contentArray, 0, contentArray.Length); ms.Position = 0; var stream = ms.AsRandomAccessStream(); if (stream != null) { EventImage ei = new EventImage(); ei.Name = inputEventImage.Name; ei.StartDate = inputEventImage.StartDate; ei.EndDate = inputEventImage.EndDate; ei.bOneDrive = false; ei.Image = new Windows.UI.Xaml.Media.Imaging.BitmapImage(); ei.Image.SetSource(stream); attachments.Add(ei); } } } else { var stream = await GetAttachmentFromOneDrive(name, contentType, contentHtml); if (stream != null) { EventImage ei = new EventImage(); ei.Name = inputEventImage.Name; ei.StartDate = inputEventImage.StartDate; ei.EndDate = inputEventImage.EndDate; ei.bOneDrive = true; ei.Image = new Windows.UI.Xaml.Media.Imaging.BitmapImage(); ei.Image.SetSource(stream); attachments.Add(ei); } } } } } else { System.Diagnostics.Debug.WriteLine("We could not get the current user's events. The request returned this status code: " + response.StatusCode); return(null); } } catch (Exception e) { System.Diagnostics.Debug.WriteLine("We could not get the current user's events: " + e.Message); return(null); } return(attachments); }
// Gets the signed-in user's calendar events. public static async Task <ObservableCollection <EventImage> > GetEventsAsync(string startDateTime, string endDateTime) { var events = new ObservableCollection <EventImage>(); JObject jResult = null; try { HttpClient client = new HttpClient(); var token = await AuthenticationHelper.GetTokenForUserAsync(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); // Endpoint for the current user's events Uri usersEndpoint = new Uri(serviceEndpoint + "me/calendarview?startdatetime=" + startDateTime + "&enddatetime=" + endDateTime); HttpResponseMessage response = await client.GetAsync(usersEndpoint); if (response.IsSuccessStatusCode) { string responseContent = await response.Content.ReadAsStringAsync(); jResult = JObject.Parse(responseContent); foreach (JObject calendarEvent in jResult["value"]) { EventImage ei = new EventImage(); ei.Name = (string)calendarEvent["subject"]; var startObj = calendarEvent["start"]; ei.StartDate = (string)startObj["dateTime"]; var endObj = calendarEvent["end"]; ei.EndDate = (string)endObj["dateTime"]; var bodyObj = calendarEvent["body"]; string contentType = (string)bodyObj["contentType"]; string content = (string)bodyObj["content"]; ei.bOneDrive = false; string eventId = (string)calendarEvent["id"]; bool attach = (bool)calendarEvent["hasAttachments"]; if (attach == true) { var listAttach = await GetEventAttachmentsAsync(eventId, ei, contentType, content); if (listAttach != null) { foreach (var e in listAttach) { events.Add(e); } } } System.Diagnostics.Debug.WriteLine("Got event: " + eventId); } } else { System.Diagnostics.Debug.WriteLine("We could not get the current user's events. The request returned this status code: " + response.StatusCode); return(null); } } catch (Exception e) { System.Diagnostics.Debug.WriteLine("We could not get the current user's events: " + e.Message); return(null); } return(events); }