public async Task <bool> DeleteCalendarEvent(string Id) { string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/Me/Calendar/Events('{1}')", _serviceInfo.ApiEndpoint, Id); Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Delete, requestUrl); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); return(request); }; HttpResponseMessage response = await Office365Helper.SendRequestAsync(_serviceInfo, _httpClient, requestCreator); string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(_serviceInfo, responseString); return(false); } return(true); }
private async void CalendarButton_Click(object sender, RoutedEventArgs e) { Exception exception = null; try { this.DefaultViewModel["Subtitle"] = "Upcoming events"; this.DefaultViewModel["Items"] = new[] { new { Primary = "Loading...", Secondary = "Please wait..." } }; SampleModel.Exchange.CalendarEvent[] events = await GetCalendarEvents(); if (events == null) { this.DefaultViewModel["Items"] = null; } else { this.DefaultViewModel["Items"] = events.Select(calendarEvent => new { Primary = calendarEvent.Subject, Secondary = ToLocalTimeString(calendarEvent.Start) + " to " + ToLocalTimeString(calendarEvent.End) }); } } catch (Exception ex) { exception = ex; } if (exception != null) { await Office365Helper.ShowErrorMessageAsync("An unexpected error has occurred", null); } }
private async void MailButton_Click(object sender, RoutedEventArgs e) { Exception exception = null; try { this.DefaultViewModel["Subtitle"] = "Recent emails"; this.DefaultViewModel["Items"] = new[] { new { Primary = "Loading...", Secondary = "Please wait..." } }; SampleModel.Exchange.Message[] messages = await GetMessages(); if (messages == null) { this.DefaultViewModel["Items"] = null; } else { this.DefaultViewModel["Items"] = messages.Select(message => new { Primary = message.Subject, Secondary = "Received " + ToLocalTimeString(message.DateTimeReceived) + " from " + message.From.Name }); } } catch (Exception ex) { exception = ex; } if (exception != null) { await Office365Helper.ShowErrorMessageAsync("An unexpected error has occurred", null); } }
private async void ContactsButton_Click(object sender, RoutedEventArgs e) { Exception exception = null; try { this.DefaultViewModel["Subtitle"] = "Contacts"; this.DefaultViewModel["Items"] = new[] { new { Primary = "Loading...", Secondary = "Please wait..." } }; SampleModel.Exchange.Contact[] contacts = await GetContacts(); if (contacts == null) { this.DefaultViewModel["Items"] = null; } else { this.DefaultViewModel["Items"] = contacts.Select(contact => new { Primary = contact.DisplayName, Secondary = contact.EmailAddress1 }); } } catch (Exception ex) { exception = ex; } if (exception != null) { await Office365Helper.ShowErrorMessageAsync("An unexpected error has occurred", null); } }
/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { Exception exception = null; try { this.DefaultViewModel["Items"] = new[] { new { Primary = "Loading...", Secondary = "Please wait..." } }; SampleModel.ActiveDirectory.UserProfile profile = await GetActiveDirectoryProfile(); if (profile == null) { this.DefaultViewModel["Items"] = null; } else { this.DefaultViewModel["Items"] = new[] { new { Primary = profile.DisplayName, Secondary = "Display Name" }, new { Primary = profile.GivenName, Secondary = "First Name" }, new { Primary = profile.Surname, Secondary = "Last Name" } }; } } catch (Exception ex) { exception = ex; } if (exception != null) { await Office365Helper.ShowErrorMessageAsync("An unexpected error has occurred", null); } }
public static async Task <UserProfile> GetUserProfileRequest() { UserProfile userProfile = null; string errorMessage = string.Empty; try { // Obtain information for communicating with the service: Office365ServiceInfo serviceInfo = await Office365ServiceInfo.GetActiveDirectoryServiceInfoAsync(); if (!serviceInfo.HasValidAccessToken) { throw new Exception("Unable to get AAD ServiceInfo"); } // Create a URL for retrieving the data: string[] queryParameters = { "api-version=2013-11-08" }; string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/me?{1}", serviceInfo.ApiEndpoint, String.Join("&", queryParameters)); // Prepare the HTTP request: using (HttpClient client = new HttpClient()) { Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); return(request); }; using (HttpResponseMessage response = await Office365Helper.SendRequestAsync( serviceInfo, client, requestCreator)) { // Read the response and deserialize the data: string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(serviceInfo, responseString); return(userProfile); } userProfile = JsonConvert.DeserializeObject <UserProfile>(responseString); } } } catch (Exception ex) { errorMessage = ex.Message; } return(userProfile); }
private async Task <int> GetCalendarEventsRequest(string requestUrl, bool firstPage) { string errorMessage = string.Empty; try { Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); return(request); }; HttpResponseMessage response = await Office365Helper.SendRequestAsync(_serviceInfo, _httpClient, requestCreator); string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(_serviceInfo, responseString); return(0); } JsonValue jsonResponse = JsonValue.Parse(responseString); JsonArray events = jsonResponse.GetObject().GetNamedArray("value"); if (events.Count > 0) { foreach (JsonValue o in events) { //CalendarEvent c = JsonConvert.DeserializeObject<CalendarEvent>(o.Stringify()); CalendarEvent c = CommonCode.Deserialize <CalendarEvent>(o.Stringify()); JsonObject json = JsonObject.Parse(o.Stringify()); c.Id = json.GetNamedString("Id"); _events.Add(c); _calendarItemIdForUpdate = c.Id; } return(events.Count); } else { return(0); } } catch (Exception ex) { errorMessage = ex.Message; } await Office365Helper.ShowErrorMessageAsync("Unexpected error retrieving events", errorMessage); return(0); }
private static async Task <SampleModel.Exchange.CalendarEvent[]> GetCalendarEvents() { // Obtain information for communicating with the service: Office365ServiceInfo serviceInfo = await Office365ServiceInfo.GetExchangeServiceInfoAsync(); if (!serviceInfo.HasValidAccessToken) { return(null); } // Create a URL for retrieving the data: string[] queryParameters = { String.Format(CultureInfo.InvariantCulture, "$filter=End ge {0}Z", DateTime.UtcNow.ToString("s")), "$top=10", "$select=Subject,Start,End" }; string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/Me/Calendar/Events?{1}", serviceInfo.ApiEndpoint, String.Join("&", queryParameters)); // Prepare the HTTP request: using (HttpClient client = new HttpClient()) { Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); return(request); }; // Send the request using a helper method, which will add an authorization header to the request, // and automatically retry with a new token if the existing one has expired. using (HttpResponseMessage response = await Office365Helper.SendRequestAsync( serviceInfo, client, requestCreator)) { // Read the response and deserialize the data: string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(serviceInfo, responseString); return(null); } var events = JObject.Parse(responseString)["value"].ToObject <SampleModel.Exchange.CalendarEvent[]>(); events = events.OrderBy(e => e.Start).ToArray(); return(events); } } }
public static async Task SendMail(Message mailMessage) { // Obtain information for communicating with the service: Office365ServiceInfo serviceInfo = await Office365ServiceInfo.GetExchangeServiceInfoAsync(); if (!serviceInfo.HasValidAccessToken) { await Office365Helper.ShowErrorMessageAsync("Unable to get Exchange ServiceInfo", string.Empty); return; } HttpClient client = new HttpClient(); // Create a URL for retrieving the data: string[] queryParameters = new string[] { "MessageDisposition=SendOnly" }; string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/Me/Messages?{1}", serviceInfo.ApiEndpoint, String.Join("&", queryParameters)); // string postData = JsonConvert.SerializeObject(mailMessage); string postData = CommonCode.Serialize(mailMessage); Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUrl); request.Content = new StringContent(postData); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return(request); }; using (HttpResponseMessage response = await Office365Helper.SendRequestAsync( serviceInfo, client, requestCreator)) { // Read the response and deserialize the data: string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(serviceInfo, responseString); } // TODO maybe display a confirmation. } }
private static async Task <SampleModel.ActiveDirectory.UserProfile> GetActiveDirectoryProfile() { // Obtain information for communicating with the service: Office365ServiceInfo serviceInfo = await Office365ServiceInfo.GetActiveDirectoryServiceInfoAsync(); if (!serviceInfo.HasValidAccessToken) { return(null); } // Create a URL for retrieving the data: string[] queryParameters = { "api-version=2013-11-08" }; string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/{1}/users/{2}?{3}", serviceInfo.ApiEndpoint, WebUtility.UrlEncode(Office365Helper.TenantId), WebUtility.UrlEncode(Office365Helper.UserId), String.Join("&", queryParameters)); // Prepare the HTTP request: using (HttpClient client = new HttpClient()) { Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); return(request); }; // Send the request using a helper method, which will add an authorization header to the request, // and automatically retry with a new token if the existing one has expired. using (HttpResponseMessage response = await Office365Helper.SendRequestAsync( serviceInfo, client, requestCreator)) { // Read the response and deserialize the data: string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(serviceInfo, responseString); return(null); } return(JsonConvert.DeserializeObject <SampleModel.ActiveDirectory.UserProfile>(responseString)); } } }
public static async Task <CalendarEvents> CreateCalendarInstance() { CalendarEvents calendarEvents = new CalendarEvents(); // Obtain information for communicating with the service: calendarEvents._serviceInfo = await Office365ServiceInfo.GetExchangeServiceInfoAsync(); if (!calendarEvents._serviceInfo.HasValidAccessToken) { await Office365Helper.ShowErrorMessageAsync("Unable to get Exchange ServiceInfo", string.Empty); return(null); } calendarEvents._httpClient = new HttpClient(); return(calendarEvents); }
public async Task <CalendarEvent> UpdateCalendarEvent(CalendarEvent calendarEvent) { string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/Me/Calendar/Events('{1}')", _serviceInfo.ApiEndpoint, _calendarItemIdForUpdate); // string postData = JsonConvert.SerializeObject(calendarEvent); string postData = CommonCode.Serialize(calendarEvent); Func <HttpRequestMessage> requestCreator = () => { var patch = new HttpMethod("PATCH"); HttpRequestMessage request = new HttpRequestMessage(patch, requestUrl); request.Content = new StringContent(postData); request.Headers.Add("Accept", "application/json;odata=minimalmetadata"); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return(request); }; HttpResponseMessage response = await Office365Helper.SendRequestAsync(_serviceInfo, _httpClient, requestCreator); string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(_serviceInfo, responseString); return(null); } // CalendarEvent c = JsonConvert.DeserializeObject<CalendarEvent>(responseString); CalendarEvent c = CommonCode.Deserialize <CalendarEvent>(responseString); return(c); }
public async Task <List <Session> > GetSessions() { List <Session> sessionList = new List <Session>(); string errorMessage = String.Empty; try { // Obtain information for communicating with the service: Office365ServiceInfo serviceInfo = await Office365ServiceInfo.GetSharePointServiceInfoAsync( AppSettings.SharePointHostResourceId, AppSettings.SharePointSessionListUri); if (!serviceInfo.HasValidAccessToken) { throw new Exception("Unable to get SharePoint ServiceInfo"); } // Create a URL for retrieving the data: string[] queryParameters = new string[] { "select=title,start,end,description,code" }; string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/items?{1}", serviceInfo.ApiEndpoint, String.Join("&", queryParameters)); // Prepare the HTTP request: using (HttpClient client = new HttpClient()) { Func <HttpRequestMessage> requestCreator = () => { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Add("Accept", "application/json;odata=verbose"); return(request); }; // Send the request using a helper method, which will add an authorization header to the request, // and automatically retry with a new token if the existing one has expired. using (HttpResponseMessage response = await Office365Helper.SendRequestAsync( serviceInfo, client, requestCreator)) { // Read the response and deserialize the data: string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { await Office365Helper.ShowErrorMessageAsync(serviceInfo, responseString); return(sessionList); } //sessionList = JObject.Parse(responseString)["d"]["results"].ToObject<List<Session>>(); JsonValue jsonResponse = JsonValue.Parse(responseString); JsonObject d = jsonResponse.GetObject().GetNamedObject("d"); JsonArray sessionsArray = d.GetObject().GetNamedArray("results"); if (sessionsArray.Count > 0) { foreach (JsonValue o in sessionsArray) { Session s = CommonCode.Deserialize <Session>(o.Stringify()); sessionList.Add(s); } } } } } catch (Exception ex) { errorMessage = ex.Message; } if (!sessionList.Any()) { await Office365Helper.ShowErrorMessageAsync("No Sessions Available.", errorMessage); } return(sessionList); }