/// <summary> /// Does sanity checking and error logging on missing data in schedules /// </summary> /// <param name="schedule"></param> private void SanityCheckSchedule(SiteSchedule schedule, XmlNode xmlNode) { if (string.IsNullOrWhiteSpace(schedule.Id)) { _onlineSession.StatusLog.AddError(schedule.ScheduleName + " is missing a schedule ID. Not returned from server! xml=" + xmlNode.OuterXml); } }
/// <summary> /// Get a page's worth of Schedules listing /// </summary> /// <param name="onlineSchedules"></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 <SiteSchedule> onlineSchedules, int pageToRequest, 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_SchedulesList(_onlineSession, pageSize, pageToRequest); _onlineSession.StatusLog.AddStatus("Web request: " + urlQuery, -10); XmlDocument xmlDoc = ResourceSafe_PerformWebRequest_GetXmlDocument(urlQuery, "get schedules list"); //var webRequest = CreateLoggedInWebRequest(urlQuery); //webRequest.Method = "GET"; //var response = GetWebReponseLogErrors(webRequest, "get schedules list"); //var xmlDoc = GetWebResponseAsXml(response); //Get all the schedule nodes var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var schedules = xmlDoc.SelectNodes("//iwsOnline:schedule", nsManager); //Get information for each of the data sources foreach (XmlNode itemXml in schedules) { try { var thisSchedule = new SiteSchedule(itemXml); onlineSchedules.Add(thisSchedule); SanityCheckSchedule(thisSchedule, itemXml); } catch { AppDiagnostics.Assert(false, "Schedule parse error"); _onlineSession.StatusLog.AddError("Error parsing schedule: " + itemXml.OuterXml); } } //end: foreach //------------------------------------------------------------------- //Get the updated page-count //------------------------------------------------------------------- totalNumberPages = DownloadPaginationHelper.GetNumberOfPagesFromPagination( xmlDoc.SelectSingleNode("//iwsOnline:pagination", nsManager), pageSize); }
/// <summary> /// Adds a schedule to the list /// </summary> /// <param name="newSchedule"></param> internal void AddSchedule(SiteSchedule newSchedule) { _schedules.Add(newSchedule); }