public void LoadDetailEntryWithoutFeedTest()
        {
            var entry = OpdsItem.Load(new XmlTextReader("http://www.feedbooks.com/item/220817.atom"));

            Assert.IsNotNull(entry);
            Assert.IsInstanceOfType(entry, typeof(OpdsItem));
        }
        public void OpdsPriceGenerationTest()
        {
            var feed = OpdsItem.Load(new XmlTextReader("http://www.feedbooks.com/item/220817.atom"));
            var xml  = feed.ToXml();

            Trace.Write(xml);
            Assert.IsTrue(xml.Contains("opds:price"));
        }
 private void OnOpdsLoaderDoWork(object sender, DoWorkEventArgs e)
 {
     try
     {
         e.Result = OpdsFeed.Load(new XmlTextReader(e.Argument as string));
     }
     catch (XmlException)
     {
         e.Result = new OpdsFeed(new[] { OpdsItem.Load(new XmlTextReader(e.Argument as string)) });
     }
 }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <param name="response"></param>
        public static void WriteTo(this OpdsItem item, HttpResponse response)
        {
            response.Clear();
            response.ContentType     = OpdsMediaType.Entry;
            response.ContentEncoding = Encoding.UTF8;
            var xmlWriter = new XmlTextWriter(response.Output);

            xmlWriter.Indentation = 4;
            xmlWriter.Formatting  = Formatting.Indented;

            item.SaveAsAtom10(xmlWriter);
        }
        public void IndirectAcquisitionReadingTest()
        {
            var entry = OpdsItem.Load(new XmlTextReader("http://www.feedbooks.com/item/220817.atom"));
            var link  = entry.Links.Single(l => (l as OpdsLink).Prices.Count > 0) as OpdsLink;
            var indirectAcquisition = new OpdsIndirectAcquisition("application/zip");

            indirectAcquisition.Items.Add(new OpdsIndirectAcquisition("application/epub+zip"));
            indirectAcquisition.Items.Add(new OpdsIndirectAcquisition("application/pdf"));
            indirectAcquisition.Items.Add(new OpdsIndirectAcquisition("application/msword"));
            link.IndirectAcquisitions.Clear();
            link.IndirectAcquisitions.Add(indirectAcquisition);

            var xml = entry.ToXml();

            entry = OpdsItem.Load(new XmlTextReader(new StringReader(xml)));
            link  = entry.Links.Single(l => (l as OpdsLink).Prices.Count > 0) as OpdsLink;
            Assert.AreEqual(1, link.IndirectAcquisitions.Count);
            Assert.AreEqual(3, link.IndirectAcquisitions.First().Items.Count);
            Assert.AreEqual(xml, entry.ToXml());
        }
Example #6
0
        private OpdsItem CreateBasicDataItems(IPropertyAccessor accessor, object item)
        {
            var syndicationItem = new OpdsItem
            {
                Title   = item.GetProperty(Names.Title, accessor).MakeSyndicationContent(),
                Id      = item.GetProperty(Names.Id, accessor).ToNullableString(),
                Summary = item.GetProperty(Names.Summary, accessor).MakeSyndicationContent(),
            };

            if (syndicationItem.Id == null)
            {
                throw new InvalidProgramException(String.Format("Id is missing in the given data of type {0}.", item.GetType().FullName));
            }

            var updateTime = item.GetProperty(Names.UpdateTime, accessor);

            if (updateTime != null && (DateTime)updateTime != DateTime.MinValue)
            {
                syndicationItem.LastUpdatedTime = new DateTimeOffset(Convert.ToDateTime(updateTime));
            }
            ExtracPersonInfo(item, syndicationItem.Authors, Names.AuthorPrefix, accessor);

            return(syndicationItem);
        }