/// <summary> /// Creates an <see cref="XmlReader" /> for reading an Atom feed from /// the provided <see cref="Uri" />. /// </summary> /// <param name="href"> /// The relative <see cref="Uri" /> of the Atom feed to read. /// </param> /// <returns> /// An <see cref="XmlReader" /> over the Atom feed identified by /// <paramref name="href" />. /// </returns> /// <remarks> /// <para> /// This method attempts to find a BLOB corresponding to /// <paramref name="href" />. If the BLOB is found, an /// <see cref="XmlReader" /> over that BLOB is created and returned. If /// the BLOB isn't found, an XmlReader over an empty Atom Feed is /// returned. In this case, no BLOB is created for the empty Atom Feed. /// In other words: this method has no observable side-effects. /// </para> /// </remarks> public XmlReader CreateFeedReaderFor(Uri href) { var blobRef = this.CreateBlobReference(href); if (blobRef.Exists()) { return(XmlReader.Create( blobRef.OpenRead(), new XmlReaderSettings { CloseInput = true })); } return(AtomEventStorage.CreateNewFeed(href)); }
public void CreateNewFeedReturnsCorrectResult( Guid id, IContentSerializer dummySerializer) { var href = new Uri(id.ToString(), UriKind.Relative); var before = DateTimeOffset.Now; XmlReader actual = AtomEventStorage.CreateNewFeed(href); var actualFeed = AtomFeed.ReadFrom(actual, dummySerializer); Assert.Equal <Guid>(id, actualFeed.Id); Assert.True(before <= actualFeed.Updated); Assert.True(actualFeed.Updated <= DateTimeOffset.Now); Assert.Empty(actualFeed.Entries); Assert.Contains(AtomLink.CreateSelfLink(href), actualFeed.Links); }