public async Task <List <XGroup> > GetGroups() { HttpClient client = Context.GetClient(); var request = new HttpRequestMessage(); Uri siteUrl = new Uri(Context.SiteUrl); Uri getCurrentUser = new Uri(siteUrl, string.Format("/_api/Web/GetUserById({0})/Groups", Id)); request.Method = HttpMethod.Get; request.RequestUri = getCurrentUser; List <XGroup> groups = null; //TODO: add error handling await client.SendAsync(request).ContinueWith((taskwithmsg) => { var response = taskwithmsg.Result; var responseContentTask = response.Content.ReadAsStringAsync(); responseContentTask.Wait(); string resPonseData = responseContentTask.Result; groups = XGroup.ParseGroups(resPonseData); groups.ForEach(x => x.Context = Context); return(groups); }); return(groups); }
public static List <XGroup> ParseGroups(string resPonseData) { XElement x = XElement.Parse(resPonseData); x = XmlUtil.RemoveAllNamespaces(x); var entries = x.Descendants("entry"); List <XGroup> groups = new List <XGroup>(); foreach (var entry in entries) { XGroup group = new XGroup { Title = entry.XPathSelectElement("content/properties/Title").Value, Id = int.Parse(entry.XPathSelectElement("content/properties/Id").Value), LoginName = entry.XPathSelectElement("content/properties/LoginName").Value, PrincipalType = int.Parse(entry.XPathSelectElement("content/properties/PrincipalType").Value), AllowMembersEditMembership = bool.Parse(entry.XPathSelectElement("content/properties/AllowMembersEditMembership").Value), AllowRequestToJoinLeave = bool.Parse(entry.XPathSelectElement("content/properties/AllowRequestToJoinLeave").Value), AutoAcceptRequestToJoinLeave = bool.Parse(entry.XPathSelectElement("content/properties/AutoAcceptRequestToJoinLeave").Value), Description = entry.XPathSelectElement("content/properties/Description").Value, OnlyAllowMembersViewMembership = bool.Parse(entry.XPathSelectElement("content/properties/OnlyAllowMembersViewMembership").Value), OwnerTitle = entry.XPathSelectElement("content/properties/OwnerTitle").Value }; groups.Add(group); } return(groups); }