/// <summary>
/// Get a page's worth of Groups
/// </summary>
/// <param name="onlineGroups"></param>
/// <param name="pageToRequest">Page # we are requesting (1 based)</param>
/// <param name="totalNumberPages">Total # of pages of data that Server can return us</param>
private void ExecuteRequest_ForPage(
List <SiteGroup> onlineGroups,
int pageToRequest,
bool downloadMemberList,
out int totalNumberPages)
{
int pageSize = _onlineUrls.PageSize;
//Create a web request, in including the users logged-in auth information in the request headers
var urlQuery = _onlineUrls.Url_GroupsList(_onlineSession, pageSize, pageToRequest);
_onlineSession.StatusLog.AddStatus("Web request: " + urlQuery, -10);
XmlDocument xmlDoc = ResourceSafe_PerformWebRequest_GetXmlDocument(urlQuery, "get groups list");
//Get all the group nodes
var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline");
var groups = xmlDoc.SelectNodes("//iwsOnline:group", nsManager);
//Get information for each of the data sources
foreach (XmlNode itemXml in groups)
{
SiteGroup thisGroup = null;
try
{
thisGroup = new SiteGroup(
itemXml,
null); //We'll get and add the list of users later (see below)
onlineGroups.Add(thisGroup);
SanityCheckGroup(thisGroup, itemXml);
}
catch (Exception exGetGroup)
{
AppDiagnostics.Assert(false, "Group parse error");
_onlineSession.StatusLog.AddError("Error parsing group: " + itemXml.OuterXml + ", " + exGetGroup.Message);
}
//==============================================================
//Get the set of users in the group
//==============================================================
if ((thisGroup != null) && (downloadMemberList))
{
try
{
var downloadUsersInGroup = new DownloadUsersListInGroup(
_onlineSession,
thisGroup.Id);
downloadUsersInGroup.ExecuteRequest();
thisGroup.AddUsers(downloadUsersInGroup.Users);
}
catch (Exception exGetUsers)
{
_onlineSession.StatusLog.AddError("Error parsing group's users: " + exGetUsers.Message);
}
}
} //end: foreach
//-------------------------------------------------------------------
//Get the updated page-count
//-------------------------------------------------------------------
totalNumberPages = DownloadPaginationHelper.GetNumberOfPagesFromPagination(
xmlDoc.SelectSingleNode("//iwsOnline:pagination", nsManager),
pageSize);
}