Beispiel #1
0
        /// <summary>
        /// Helper method to get the event page reader from the events URL.
        /// </summary>
        /// <param name="eventsUrl">Uri for event list.</param>
        /// <returns>EventPageReader object containing the page list of events.</returns>
        private EventPageReader GetEvents(Uri eventsUrl)
        {
            //
            // create the EventPageReader object and pass in the events url.
            //
            EventPageReader eventPageReader = new EventPageReader(eventsUrl);

            //
            // return the reader object.
            //
            return(eventPageReader);
        }
Beispiel #2
0
        /// <summary>
        /// Advances the EventPageReader to the next record.
        /// </summary>
        /// <returns>true if there are more rows; otherwise false.</returns>
        public bool Read(ref Login loginObject)
        {
            //
            //
            //
            this.recordIndex++;
            //
            // get the feed response string
            //
            string responseFromServer = EventPageReader.GetFeedResponse(this.originalEventsUrl, ref loginObject);

            //
            // namespace manager object
            //
            XmlNamespaceManager namespaceMgr;

            //
            // get the feed node
            //
            XmlNode feedNode = EventPageReader.GetFeedNode(responseFromServer, out namespaceMgr);

            //
            // populate the next page, prev page, total pages, current page, start date, end date values.
            //
            XmlNode nextPageNode = feedNode.SelectSingleNode("atom:link[@rel='next']", namespaceMgr);

            if (nextPageNode != null)
            {
                this.nextPageEventsUrl = new Uri(nextPageNode.Attributes["href"].Value);
                this.originalEventsUrl = this.nextPageEventsUrl;
            }

            XmlNode previousPageNode = feedNode.SelectSingleNode("atom:link[@rel='previous']", namespaceMgr);

            if (previousPageNode != null)
            {
                this.previousPageEventsUrl = new Uri(previousPageNode.Attributes["href"].Value);
            }

            XmlNode totalPagesNode = feedNode.SelectSingleNode("wer:totalPages", namespaceMgr);

            if (totalPagesNode != null)
            {
                this.totalPages = int.Parse(totalPagesNode.InnerText);
            }

            XmlNode currentPageNode = feedNode.SelectSingleNode("wer:currentPage", namespaceMgr);

            if (currentPageNode != null)
            {
                this.currentPage = int.Parse(currentPageNode.InnerText);
            }

            XmlNode startDateNode = feedNode.SelectSingleNode("wer:startDate", namespaceMgr);

            if (startDateNode != null)
            {
                this.startDateLocal = DateTime.Parse(startDateNode.InnerText).ToLocalTime();
            }

            XmlNode endDateNode = feedNode.SelectSingleNode("wer:endDate", namespaceMgr);

            if (endDateNode != null)
            {
                this.endDateLocal = DateTime.Parse(endDateNode.InnerText).ToLocalTime();
            }

            //
            // if we do not have any event data then total pages will be 0, in which case return false.
            //
            if (this.totalPages == 0)
            {
                return(false);
            }

            if (recordIndex == this.totalPages)
            {
                return(false);
            }

            //
            // get the entry nodes from the XML
            //
            XmlNodeList entryNodes = EventPageReader.GetEntryNodes(responseFromServer, out namespaceMgr);

            //
            // create an empty events list
            //
            List <Event> eventList = new List <Event>(entryNodes.Count);

            //
            // parse the entry elements and load the event objects
            // and add them to the event group collection
            //
            foreach (XmlNode entryNode in entryNodes)
            {
                Event eventObj = new Event();

                // event id
                eventObj.ID = int.Parse(entryNode.SelectSingleNode("wer:eventID", namespaceMgr).InnerText);

                // event type name
                eventObj.EventTypeName = entryNode.SelectSingleNode("wer:eventTypeName", namespaceMgr).InnerText;

                // total hits
                eventObj.TotalHits = int.Parse(entryNode.SelectSingleNode("wer:totalHits", namespaceMgr).InnerText);

                // updated - file date modified
                eventObj.DateModifiedLocal = DateTime.Parse(entryNode.SelectSingleNode("atom:updated", namespaceMgr).InnerText).ToLocalTime();

                // published - file date created
                eventObj.DateCreatedLocal = DateTime.Parse(entryNode.SelectSingleNode("atom:published", namespaceMgr).InnerText).ToLocalTime();

                // link[rel='cabs'] - cab list url
                XmlNode cabUrlNode = entryNode.SelectSingleNode("atom:link[@rel='cabs']", namespaceMgr);
                if (cabUrlNode != null)
                {
                    eventObj.CabUrl = new Uri(cabUrlNode.Attributes["href"].Value);
                }

                // link[rel='details'] - event details (hit data) url
                XmlNode detailsUrlNode = entryNode.SelectSingleNode("atom:link[@rel='details']", namespaceMgr);
                if (detailsUrlNode != null)
                {
                    eventObj.DetailsUrl = new Uri(detailsUrlNode.Attributes["href"].Value);
                }

                //
                // get the wer:signature element.
                //
                XmlNode signatureNode = entryNode.SelectSingleNode("wer:signature", namespaceMgr);

                if (signatureNode != null)
                {
                    EventSignature eventSignature = new EventSignature();

                    //
                    // get all the parameter nodes.
                    //
                    XmlNodeList parameterNodeList = signatureNode.SelectNodes("wer:parameter", namespaceMgr);

                    if (parameterNodeList != null)
                    {
                        //
                        // loop through all the parameters and add them to the parameter collection.
                        //
                        foreach (XmlNode parameterNode in parameterNodeList)
                        {
                            Parameter parameter = new Parameter(parameterNode.Attributes["wer:name"].Value, parameterNode.Attributes["wer:value"].Value);
                            eventSignature.Parameters.Add(parameter);
                        }
                    }

                    //
                    // assign the event signature to the Signature property.
                    //
                    eventObj.Signature = eventSignature;
                }

                //
                // add the event to the event list.
                //
                eventList.Add(eventObj);
            }

            //
            // create the events reader from the event list.
            //
            EventReader eventReader = new EventReader(eventList);

            //
            // assign the event reader to the Events property.
            //
            this.Events = eventReader;

            return(true);
        }