コード例 #1
0
 public void Load2()
 {
     ServiceDocument.Load(XmlReader.Create(new StringReader(app2)));
 }
コード例 #2
0
        public override IEnumerable <IFragment> GetFragments(DateTime since, DateTime before)
        {
            // get list of all odata type collections
            var xmlReader = XmlReader.Create(_odataEndpoint, new XmlReaderSettings()
            {
                CloseInput = true
            });
            var serviceDocument = ServiceDocument.Load(xmlReader);

            if (serviceDocument.Workspaces.Count == 0)
            {
                throw new Exception("No workspace found in service document");
            }
            xmlReader.Close();

            var workspace = serviceDocument.Workspaces[0];

            foreach (var resourceCollectionInfo in workspace.Collections)
            {
                var             queryUrl = _odataEndpoint + resourceCollectionInfo.Link;
                SyndicationFeed feed     = null;
                XmlReader       reader   = null;
                try
                {
                    reader = XmlReader.Create(queryUrl, new XmlReaderSettings()
                    {
                        CloseInput = true
                    });
                    feed = SyndicationFeed.Load(reader);
                    reader.Close();
                } catch (Exception e)
                {
                    Logging.LogError(1, "Unable to fetch odata collection data {0} {1}", queryUrl, e.Message);
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }

                if (feed != null)
                {
                    // issue a query against each collection to find all entries that have changed since the give date
                    foreach (var syndicationItem in feed.Items)
                    {
                        Fragment fragment = null;
                        try {
                            if (syndicationItem.LastUpdatedTime.UtcDateTime > since)
                            {
                                fragment = new Fragment()
                                {
                                    PublishDate  = syndicationItem.LastUpdatedTime.UtcDateTime,
                                    ResourceId   = syndicationItem.Id,
                                    ResourceName = syndicationItem.Title.Text,
                                    ResourceUri  = syndicationItem.Id
                                };
                            }
                        } catch (Exception e)
                        {
                            Logging.LogError(1, "Unable to build fragment {0} {1}", e.Message, e.StackTrace);
                        }
                        if (fragment != null)
                        {
                            yield return(fragment);
                        }
                    }
                }
            }
            yield break;
        }