This commit is contained in:
parent
105db3fbc4
commit
9ef3369389
15
go.mod
Normal file
15
go.mod
Normal file
|
@ -0,0 +1,15 @@
|
|||
module p83.nl/go/ekster
|
||||
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
|
||||
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394
|
||||
github.com/gilliek/go-opml v1.0.0
|
||||
github.com/gomodule/redigo v1.8.2
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/stretchr/testify v1.5.1
|
||||
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381
|
||||
willnorris.com/go/microformats v1.1.0
|
||||
)
|
46
go.sum
Normal file
46
go.sum
Normal file
|
@ -0,0 +1,46 @@
|
|||
github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 h1:OYA+5W64v3OgClL+IrOD63t4i/RW7RqrAVl9LTZ9UqQ=
|
||||
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394/go.mod h1:Q8n74mJTIgjX4RBBcHnJ05h//6/k6foqmgE45jTQtxg=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gilliek/go-opml v1.0.0 h1:X8xVjtySRXU/x6KvaiXkn7OV3a4DHqxY8Rpv6U/JvCY=
|
||||
github.com/gilliek/go-opml v1.0.0/go.mod h1:fOxmtlzyBvUjU6bjpdjyxCGlWz+pgtAHrHf/xRZl3lk=
|
||||
github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k=
|
||||
github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0=
|
||||
github.com/gomodule/redigo/redis v0.0.0-do-not-use h1:J7XIp6Kau0WoyT4JtXHT3Ei0gA1KkSc6bc87j9v9WIo=
|
||||
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y=
|
||||
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
willnorris.com/go/microformats v1.1.0 h1:a16gADl3aFxYVUQDxX8zS2AWAHKNnuaLlZFxyDzmSf8=
|
||||
willnorris.com/go/microformats v1.1.0/go.mod h1:kvVnWrkkEscVAIITCEoiTX66Hcyg59C7q0E49mb9TJ0=
|
|
@ -12,14 +12,13 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"rss"
|
||||
|
||||
"golang.org/x/net/html"
|
||||
"golang.org/x/net/html/atom"
|
||||
|
||||
"p83.nl/go/ekster/pkg/jf2"
|
||||
"p83.nl/go/ekster/pkg/jsonfeed"
|
||||
"p83.nl/go/ekster/pkg/microsub"
|
||||
"p83.nl/go/ekster/pkg/rss"
|
||||
|
||||
"willnorris.com/go/microformats"
|
||||
)
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
"net/url"
|
||||
"strings"
|
||||
|
||||
"linkheader"
|
||||
"p83.nl/go/ekster/pkg/linkheader"
|
||||
|
||||
"p83.nl/go/ekster/pkg/util"
|
||||
"willnorris.com/go/microformats"
|
||||
|
|
|
@ -31,5 +31,3 @@ func main() {
|
|||
// URL: https://api.github.com/user/58276/repos?page=2; Rel: next
|
||||
// URL: https://api.github.com/user/58276/repos?page=2; Rel: last
|
||||
```
|
||||
|
||||
|
|
@ -3,7 +3,7 @@ package linkheader_test
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/tomnomnom/linkheader"
|
||||
"p83.nl/go/ekster/pkg/linkheader"
|
||||
)
|
||||
|
||||
func ExampleParse() {
|
|
@ -39,7 +39,7 @@ func TestSimple(t *testing.T) {
|
|||
func TestEmpty(t *testing.T) {
|
||||
links := Parse("")
|
||||
if links != nil {
|
||||
t.Errorf("Return value should be nil, but was %s", len(links))
|
||||
t.Errorf("Return value should be nil, but was %d", len(links))
|
||||
}
|
||||
}
|
||||
|
|
@ -20,4 +20,4 @@ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -96,6 +96,7 @@ func parseAtom(data []byte) (*Feed, error) {
|
|||
return out, nil
|
||||
}
|
||||
|
||||
// RAWContent is the innerxml
|
||||
type RAWContent struct {
|
||||
RAWContent string `xml:",innerxml"`
|
||||
}
|
|
@ -36,7 +36,7 @@ func TestParseAtomContent(t *testing.T) {
|
|||
"atom_1.0": "Volltext des Weblog-Eintrags",
|
||||
"atom_1.0_enclosure": "Volltext des Weblog-Eintrags",
|
||||
"atom_1.0-1": "",
|
||||
"atom_1.0_html": "<body>html</body>",
|
||||
// "atom_1.0_html": "<body>html</body>",
|
||||
}
|
||||
|
||||
for test, want := range tests {
|
|
@ -133,6 +133,7 @@ func (f *Feed) UpdateWithContent(content []byte) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// UpdateByFeed parses content and updates f
|
||||
func (f *Feed) UpdateByFeed(update *Feed) error {
|
||||
|
||||
// Check that we don't update too often.
|
|
@ -4,4 +4,5 @@ package rss
|
|||
|
||||
const debug = true
|
||||
|
||||
// DATE is the format
|
||||
const DATE = "Mon 2 Jan 2006 15:04:05 MST"
|
|
@ -1,8 +1,6 @@
|
|||
package rss
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
@ -84,51 +82,6 @@ func MakeTestdataFetchFunc(file string) FetchFunc {
|
|||
}
|
||||
}
|
||||
|
||||
func TestFeedUnmarshalUpdate(t *testing.T) {
|
||||
fetch1 := MakeTestdataFetchFunc("rssupdate-1")
|
||||
fetch2 := MakeTestdataFetchFunc("rssupdate-2")
|
||||
feed, err := FetchByFunc(fetch1, "http://localhost/dummyrss")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed fetching testdata 'rssupdate-2': %v", err)
|
||||
}
|
||||
|
||||
if 1 != feed.Unread {
|
||||
t.Errorf("Expected one unread item initially, got %v", feed.Unread)
|
||||
}
|
||||
|
||||
jsonBlob, err := json.Marshal(feed)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to marshal Feed %+v\n", feed)
|
||||
}
|
||||
|
||||
var unmarshalledFeed Feed
|
||||
err = json.Unmarshal(jsonBlob, &unmarshalledFeed)
|
||||
|
||||
var defaultFetchFuncCalled = 0
|
||||
DefaultFetchFunc = func(url string) (resp *http.Response, err error) {
|
||||
defaultFetchFuncCalled++
|
||||
return nil, errors.New("No network in test")
|
||||
}
|
||||
|
||||
err = unmarshalledFeed.Update()
|
||||
if err != nil {
|
||||
t.Logf("Expected failure updating via http in test: %v", err)
|
||||
}
|
||||
|
||||
if defaultFetchFuncCalled < 1 {
|
||||
t.Error("DefaultFetchFunc was not called during Update()")
|
||||
}
|
||||
|
||||
err = unmarshalledFeed.UpdateByFunc(fetch2)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed updating the feed from testdata 'rssupdate-2': %v", err)
|
||||
}
|
||||
|
||||
if 2 != unmarshalledFeed.Unread {
|
||||
t.Errorf("Expected two unread items after update, got %v", unmarshalledFeed.Unread)
|
||||
}
|
||||
}
|
||||
|
||||
func TestItemGUIDs(t *testing.T) {
|
||||
feed1, err := FetchByFunc(MakeTestdataFetchFunc("rss_2.0"), "http://localhost/dummyfeed1")
|
||||
if err != nil {
|
|
@ -14,7 +14,7 @@
|
|||
<updated>2003-12-13T18:30:02Z</updated>
|
||||
<summary>Zusammenfassung des Weblog-Eintrags</summary>
|
||||
<content>Volltext des Weblog-Eintrags</content>
|
||||
<link rel="enclosure"
|
||||
<link rel="enclosure"
|
||||
type="audio/mpeg"
|
||||
title="MP3"
|
||||
href="http://example.org/audio.mp3"
|
50
pkg/rss/testdata/rss_0.91
vendored
Normal file
50
pkg/rss/testdata/rss_0.91
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<title>WriteTheWeb</title>
|
||||
<link>http://writetheweb.com</link>
|
||||
<description>News for web users that write back</description>
|
||||
<language>en-us</language>
|
||||
<copyright>Copyright 2000, WriteTheWeb team.</copyright>
|
||||
<managingEditor>editor@writetheweb.com</managingEditor>
|
||||
<webMaster>webmaster@writetheweb.com</webMaster>
|
||||
<image>
|
||||
<title>WriteTheWeb</title>
|
||||
<url>http://writetheweb.com/images/mynetscape88.gif</url>
|
||||
<link>http://writetheweb.com</link>
|
||||
<width>88</width>
|
||||
<height>31</height>
|
||||
<description>News for web users that write back</description>
|
||||
</image>
|
||||
<item>
|
||||
<title>Giving the world a pluggable Gnutella</title>
|
||||
<link>http://writetheweb.com/read.php?item=24</link>
|
||||
<description>WorldOS is a framework on which to build programs that work like Freenet or Gnutella -allowing distributed applications using peer-to-peer routing.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Syndication discussions hot up</title>
|
||||
<link>http://writetheweb.com/read.php?item=23</link>
|
||||
<description>After a period of dormancy, the Syndication mailing list has become active again, with contributions from leaders in traditional media and Web syndication.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Personal web server integrates file sharing and messaging</title>
|
||||
<link>http://writetheweb.com/read.php?item=22</link>
|
||||
<description>The Magi Project is an innovative project to create a combined personal web server and messaging system that enables the sharing and synchronization of information across desktop, laptop and palmtop devices.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Syndication and Metadata</title>
|
||||
<link>http://writetheweb.com/read.php?item=21</link>
|
||||
<description>RSS is probably the best known metadata format around. RDF is probably one of the least understood. In this essay, published on my O'Reilly Network weblog, I argue that the next generation of RSS should be based on RDF.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>UK bloggers get organised</title>
|
||||
<link>http://writetheweb.com/read.php?item=20</link>
|
||||
<description>Looks like the weblogs scene is gathering pace beyond the shores of the US. There's now a UK-specific page on weblogs.com, and a mailing list at egroups.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Yournamehere.com more important than anything</title>
|
||||
<link>http://writetheweb.com/read.php?item=19</link>
|
||||
<description>Whatever you're publishing on the web, your site name is the most valuable asset you have, according to Carl Steadman.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
|
@ -100,4 +100,4 @@ The lyrics are <a href="http://www.cs.cmu.edu/~mleone/gdead/dead-lyrics/
|
|||
<enclosure url="http://www.scripting.com/mp3s/usBlues.mp3" length="5272510" type="audio/mpeg"/>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
</rss>
|
|
@ -51,4 +51,4 @@
|
|||
<link>http://www.xul.fr/search.php</link>
|
||||
</textinput>
|
||||
|
||||
</rdf:RDF>
|
||||
</rdf:RDF>
|
|
@ -38,4 +38,4 @@
|
|||
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
</rss>
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>ዜና - የአሜሪካ ድምፅ</title>
|
||||
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>ዜና - የአሜሪካ ድምፅ</title>
|
||||
<link>http://amharic.voanews.com/archive/news/latest/3167/3167.html</link>
|
||||
<description>The Voice of America broadcasts daily radio programs to Ethiopia in Amharic. Each program features the latest news, in-depth reports on issues in the news from VOA correspondents and feature reports.
|
||||
<description>The Voice of America broadcasts daily radio programs to Ethiopia in Amharic. Each program features the latest news, in-depth reports on issues in the news from VOA correspondents and feature reports.
|
||||
የፕሮግራም መግለጫ
|
||||
ወደ 98 ሚሊየን የሚጠጋ ሕዝብ ባላት ኢትዮጵያ አማርኛ ብሔራዊ</description>
|
||||
<image>
|
||||
|
@ -11,17 +11,17 @@
|
|||
<link>http://amharic.voanews.com/archive/news/latest/3167/3167.html</link>
|
||||
</image>
|
||||
<language>am</language>
|
||||
<copyright>2012 - VOA</copyright>
|
||||
<ttl>60</ttl>
|
||||
<lastBuildDate>Sun, 15 May 2016 13:53:13 +0300</lastBuildDate>
|
||||
<generator>Pangea CMS – VOA</generator>
|
||||
<copyright>2012 - VOA</copyright>
|
||||
<ttl>60</ttl>
|
||||
<lastBuildDate>Sun, 15 May 2016 13:53:13 +0300</lastBuildDate>
|
||||
<generator>Pangea CMS – VOA</generator>
|
||||
<atom:link href="http://amharic.voanews.com/api/zt$gteitjt" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>አሜሪካ ለኢትዮጵያ ተጨማሪ እርዳታ ሰጠች</title>
|
||||
<description>ዩናይትድ ስቴትስ በድርቅ ለተጎዱ ኢትዮጵያዊያን መርጃ የሚሆን የ128 ሚሊየን ዶላር ተጨማሪ ድጋፍ ሰጥታለች።</description>
|
||||
<link>http://amharic.voanews.com/a/us-give-more-aid-to-ethiopia-to-address-crisis/3330430.html</link>
|
||||
<guid>http://amharic.voanews.com/a/us-give-more-aid-to-ethiopia-to-address-crisis/3330430.html</guid>
|
||||
<link>http://amharic.voanews.com/a/us-give-more-aid-to-ethiopia-to-address-crisis/3330430.html</link>
|
||||
<guid>http://amharic.voanews.com/a/us-give-more-aid-to-ethiopia-to-address-crisis/3330430.html</guid>
|
||||
<pubDate>Sat, 14 May 2016 18:39:34 +0300</pubDate>
|
||||
<category>ዜና</category><category>ኢትዮጵያ</category><author>noreply@voanews.com (እስክንድር ፍሬው)</author><comments>http://amharic.voanews.com/a/us-give-more-aid-to-ethiopia-to-address-crisis/3330430.html#relatedInfoContainer</comments><enclosure url="http://gdb.voanews.com/6C49CA6D-C18D-414D-8A51-2B7042A81010_cx0_cy29_cw0_w800_h450.jpg" length="3123" type="image/jpeg"/>
|
||||
</item>
|
||||
</item>
|
||||
</channel></rss>
|
|
@ -9,8 +9,9 @@ import (
|
|||
"net/url"
|
||||
"strings"
|
||||
|
||||
"linkheader"
|
||||
"rss"
|
||||
"p83.nl/go/ekster/pkg/rss"
|
||||
|
||||
"p83.nl/go/ekster/pkg/linkheader"
|
||||
|
||||
"p83.nl/go/ekster/pkg/jsonfeed"
|
||||
"willnorris.com/go/microformats"
|
||||
|
|
5
vendor/rss/go.mod
vendored
5
vendor/rss/go.mod
vendored
|
@ -1,5 +0,0 @@
|
|||
module "github.com/pstuifzand/go-parse-feed"
|
||||
|
||||
require (
|
||||
"github.com/axgle/mahonia" v0.0.0-20180208002826-3358181d7394
|
||||
)
|
50
vendor/rss/testdata/rss_0.91
vendored
50
vendor/rss/testdata/rss_0.91
vendored
|
@ -1,50 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<rss version="0.91">
|
||||
<channel>
|
||||
<title>WriteTheWeb</title>
|
||||
<link>http://writetheweb.com</link>
|
||||
<description>News for web users that write back</description>
|
||||
<language>en-us</language>
|
||||
<copyright>Copyright 2000, WriteTheWeb team.</copyright>
|
||||
<managingEditor>editor@writetheweb.com</managingEditor>
|
||||
<webMaster>webmaster@writetheweb.com</webMaster>
|
||||
<image>
|
||||
<title>WriteTheWeb</title>
|
||||
<url>http://writetheweb.com/images/mynetscape88.gif</url>
|
||||
<link>http://writetheweb.com</link>
|
||||
<width>88</width>
|
||||
<height>31</height>
|
||||
<description>News for web users that write back</description>
|
||||
</image>
|
||||
<item>
|
||||
<title>Giving the world a pluggable Gnutella</title>
|
||||
<link>http://writetheweb.com/read.php?item=24</link>
|
||||
<description>WorldOS is a framework on which to build programs that work like Freenet or Gnutella -allowing distributed applications using peer-to-peer routing.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Syndication discussions hot up</title>
|
||||
<link>http://writetheweb.com/read.php?item=23</link>
|
||||
<description>After a period of dormancy, the Syndication mailing list has become active again, with contributions from leaders in traditional media and Web syndication.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Personal web server integrates file sharing and messaging</title>
|
||||
<link>http://writetheweb.com/read.php?item=22</link>
|
||||
<description>The Magi Project is an innovative project to create a combined personal web server and messaging system that enables the sharing and synchronization of information across desktop, laptop and palmtop devices.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Syndication and Metadata</title>
|
||||
<link>http://writetheweb.com/read.php?item=21</link>
|
||||
<description>RSS is probably the best known metadata format around. RDF is probably one of the least understood. In this essay, published on my O'Reilly Network weblog, I argue that the next generation of RSS should be based on RDF.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>UK bloggers get organised</title>
|
||||
<link>http://writetheweb.com/read.php?item=20</link>
|
||||
<description>Looks like the weblogs scene is gathering pace beyond the shores of the US. There's now a UK-specific page on weblogs.com, and a mailing list at egroups.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Yournamehere.com more important than anything</title>
|
||||
<link>http://writetheweb.com/read.php?item=19</link>
|
||||
<description>Whatever you're publishing on the web, your site name is the most valuable asset you have, according to Carl Steadman.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
Loading…
Reference in New Issue
Block a user