mirror of
https://github.com/nkanaev/yarr.git
synced 2025-07-09 16:20:09 +00:00
basic rdf test
This commit is contained in:
parent
e819140f36
commit
43620cd9b6
@ -2,6 +2,7 @@ package feed
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
type rdfFeed struct {
|
type rdfFeed struct {
|
||||||
@ -19,3 +20,25 @@ type rdfItem struct {
|
|||||||
DublinCoreDate string `xml:"http://purl.org/dc/elements/1.1/ date"`
|
DublinCoreDate string `xml:"http://purl.org/dc/elements/1.1/ date"`
|
||||||
DublinCoreContent string `xml:"http://purl.org/rss/1.0/modules/content/ encoded"`
|
DublinCoreContent string `xml:"http://purl.org/rss/1.0/modules/content/ encoded"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ParseRDF(r io.Reader) (*Feed, error) {
|
||||||
|
f := rdfFeed{}
|
||||||
|
|
||||||
|
decoder := xml.NewDecoder(r)
|
||||||
|
if err := decoder.Decode(&f); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
feed := &Feed{
|
||||||
|
Title: f.Title,
|
||||||
|
SiteURL: f.Link,
|
||||||
|
}
|
||||||
|
for _, e := range f.Items {
|
||||||
|
feed.Items = append(feed.Items, Item{
|
||||||
|
GUID: e.Link,
|
||||||
|
URL: e.Link,
|
||||||
|
Title: e.Title,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return feed, nil
|
||||||
|
}
|
||||||
|
54
src/feed/rdf_test.go
Normal file
54
src/feed/rdf_test.go
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package feed
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRDFFeed(t *testing.T) {
|
||||||
|
have, _ := ParseRDF(strings.NewReader(`<?xml version="1.0"?>
|
||||||
|
<rdf:RDF
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns="http://channel.netscape.com/rdf/simple/0.9/">
|
||||||
|
|
||||||
|
<channel>
|
||||||
|
<title>Mozilla Dot Org</title>
|
||||||
|
<link>http://www.mozilla.org</link>
|
||||||
|
<description>the Mozilla Organization
|
||||||
|
web site</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
|
<image>
|
||||||
|
<title>Mozilla</title>
|
||||||
|
<url>http://www.mozilla.org/images/moz.gif</url>
|
||||||
|
<link>http://www.mozilla.org</link>
|
||||||
|
</image>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>New Status Updates</title>
|
||||||
|
<link>http://www.mozilla.org/status/</link>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Bugzilla Reorganized</title>
|
||||||
|
<link>http://www.mozilla.org/bugs/</link>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</rdf:RDF>
|
||||||
|
`))
|
||||||
|
want := &Feed{
|
||||||
|
Title: "Mozilla Dot Org",
|
||||||
|
SiteURL: "http://www.mozilla.org",
|
||||||
|
Items: []Item{
|
||||||
|
{GUID: "http://www.mozilla.org/status/", URL: "http://www.mozilla.org/status/", Title: "New Status Updates"},
|
||||||
|
{GUID: "http://www.mozilla.org/bugs/", URL: "http://www.mozilla.org/bugs/", Title: "Bugzilla Reorganized"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(want, have) {
|
||||||
|
t.Logf("want: %#v", want)
|
||||||
|
t.Logf("have: %#v", have)
|
||||||
|
t.Fatal("invalid rdf")
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user