private IEnumerable <KeyValuePair <object, SyndicationItem> > ConvertDataItems(OpdsData data) { // Assuming every item is of different type. // PropertyAdapter should be retreived for every item. foreach (var item in data.Data ?? new IOpdsDataTypeHost[] { }) { var accessor = AccessorFactory.GetAccessor(item); var dataType = TypeDetector.DetectType(item); if (dataType == OpdsDataType.Category) { var syndicationItem = CreateBasicDataItems(accessor, item); var navigationLink = LinkGenerator.Generate(item, OpdsRelations.Alternate, OpdsMediaType.NavigationFeed, accessor, Names); if (navigationLink != null) { var count = item.GetProperty(Names.Count, accessor); if (count != null) { navigationLink.Count = Convert.ToInt32(count); } syndicationItem.Links.Add(navigationLink); } OnSyndicationItemCreated(syndicationItem, item); yield return(new KeyValuePair <object, SyndicationItem>(item, syndicationItem)); } else { yield return(new KeyValuePair <object, SyndicationItem>(item, BuildEntity(data, accessor, item, dataType == OpdsDataType.Detial))); } } }
public void DetectJsonTest() { var input = @"{ ""categories"": [ ""Development"", ""VIM"" ], ""date"": ""2012-04-06"", ""images"": [""site-feature-image.jpg""], ""testint"": 1, ""testbool"": false, ""title"": ""About"" } Lorem ipsum"; var converter = new StringToStreamConverter(input); var typeDetector = new TypeDetector(new StreamReader(converter.GetStreamFromString())); using TextReader sr = new StringReader(input); var parser = new JsonParser <SinglePage>(sr, string.Empty); var single = parser.GetAsSinglePage(); Assert.Equal(FrontMatterType.Json, typeDetector.GetFrontMatterType()); Assert.Equal("About", single.Title); Assert.Equal("Lorem ipsum", single.Content); }
public void DetectMarkdownDocumentTest() { var input = "Lorem ipsum"; var converter = new StringToStreamConverter(input); using var sr = new StreamReader(converter.GetStreamFromString()); var typeDetector = new TypeDetector(sr); Assert.Equal(FrontMatterType.MarkdownDocument, typeDetector.GetFrontMatterType()); }
public void DetectHtmlDocumentTest() { var input = @"<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <h1>My First Heading</h1> <p>My first paragraph.</p> </body> </html>"; var converter = new StringToStreamConverter(input); using var sr = new StreamReader(converter.GetStreamFromString()); var typeDetector = new TypeDetector(sr); Assert.Equal(FrontMatterType.HtmlDocument, typeDetector.GetFrontMatterType()); }
public void DetectTomlTest() { var input = @" +++ title = ""About"" +++ Lorem ipsum"; var converter = new StringToStreamConverter(input); var typeDetector = new TypeDetector(new StreamReader(converter.GetStreamFromString())); using TextReader sr = new StringReader(input); var parser = new TomlParser <SinglePage>(sr, string.Empty); var single = parser.GetAsSinglePage(); Assert.Equal(FrontMatterType.Toml, typeDetector.GetFrontMatterType()); Assert.Equal("About", single.Title); Assert.Equal("Lorem ipsum", single.Content); }
public void TestTypeParseCorrectly() { var testXml = @" <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>"; using (var t = StringStream.Create(testXml)) { var xml = XDocument.Load(t.Stream); var detector = new TypeDetector(); var type = detector.Detecting(xml); Assert.Equal(type.MsgType, "text"); Assert.Equal(type.EventType, null); } }