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