Revert "pubsubhubbub support by samueltardieu". Fixes #455.

This reverts commit e3483c9c03.
db4
Joe Groff 2011-12-14 13:13:18 -08:00
parent c86d92a219
commit 9d5e676b26
5 changed files with 25 additions and 120 deletions

View File

@ -39,18 +39,16 @@ M: object >entry
"UTF-8" >>content-charset "UTF-8" >>content-charset
utf8 >>content-encoding ; utf8 >>content-encoding ;
TUPLE: feed-action < action title url hubs entries ; TUPLE: feed-action < action title url entries ;
: <feed-action> ( -- action ) : <feed-action> ( -- action )
feed-action new-action feed-action new-action
dup '[ dup '[
feed new feed new
_ _
{ [ title>> call >>title ]
[ title>> call >>title ] [ url>> call adjust-url >>url ]
[ url>> call adjust-url >>url ] [ entries>> call process-entries >>entries ]
[ hubs>> [ call [ adjust-url ] map >>hubs ] when* ] tri
[ entries>> call process-entries >>entries ]
} cleave
<feed-content> <feed-content>
] >>display ; ] >>display ;

View File

@ -1,41 +0,0 @@
! Copyright (c) 2010 Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
USING: http syndication.pubsubhubbub tools.test urls ;
[
T{ request
{ method "POST" }
{ url URL" http://rfc1149.superfeedr.com:80/" }
{ version "1.1" }
{ header
H{
{ "user-agent" "Factor http.client" }
{ "connection" "close" }
}
}
{ post-data
T{ post-data
{ data
B{
104 117 98 46 109 111 100 101 61 112 117 98
108 105 115 104 38 104 117 98 46 117 114
108 61 104 116 116 112 58 47 47 119 119 119
46 114 102 99 49 49 52 57 46 110 101 116 47
98 108 111 103 47 102 101 101 100 47 38 104
117 98 46 117 114 108 61 104 116 116 112 58
47 47 119 119 119 46 114 102 99 49 49 52 57
46 110 101 116 47 98 108 111 103 47 101 110
47 102 101 101 100 47
}
}
{ content-type
"application/x-www-form-urlencoded"
}
}
}
{ cookies V{ } }
{ redirects 10 }
}
] [
{ "http://www.rfc1149.net/blog/feed/" "http://www.rfc1149.net/blog/en/feed/" } "http://rfc1149.superfeedr.com/" <ping-request>
] unit-test

View File

@ -1,20 +0,0 @@
! Copyright (c) 2010 Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors byte-arrays kernel http http.client sequences urls.encoding ;
IN: syndication.pubsubhubbub
<PRIVATE
: <ping-data> ( feeds -- post-data )
[ url-encode "hub.url=" prepend ] map "&" join
"hub.mode=publish&" prepend >byte-array
"application/x-www-form-urlencoded" <post-data> [ data<< ] keep ;
PRIVATE>
: <ping-request> ( feeds url -- request )
[ <ping-data> ] [ <post-request> ] bi* ;
: ping ( feeds url -- )
<ping-request> http-request drop
dup code>> 204 = [ drop ] [ download-failed ] if ;

View File

@ -5,13 +5,13 @@ USING: xml.traversal kernel assocs math.order strings sequences
xml.data xml.writer io.streams.string combinators xml xml.data xml.writer io.streams.string combinators xml
xml.entities.html io.files io http.client namespaces make xml.entities.html io.files io http.client namespaces make
xml.syntax hashtables calendar.format accessors continuations xml.syntax hashtables calendar.format accessors continuations
urls present byte-arrays fry arrays ; urls present byte-arrays ;
IN: syndication IN: syndication
: any-tag-named ( tag names -- tag-inside ) : any-tag-named ( tag names -- tag-inside )
[ f ] 2dip [ tag-named nip dup ] with find 2drop ; [ f ] 2dip [ tag-named nip dup ] with find 2drop ;
TUPLE: feed title url entries hubs ; TUPLE: feed title url entries ;
: <feed> ( -- feed ) feed new ; : <feed> ( -- feed ) feed new ;
@ -65,19 +65,15 @@ TUPLE: entry title url description date ;
[ "item" tags-named [ rss2.0-entry ] map set-entries ] [ "item" tags-named [ rss2.0-entry ] map set-entries ]
tri ; tri ;
: atom-links ( tag rel -- seq ) : atom-entry-link ( tag -- url/f )
[ "links" tags-named ] dip "link" tags-named
dup "alternate" = [ f 2array ] [ 1array ] if [ "rel" attr { f "alternate" } member? ] find nip
'[ "rel" attr _ member? ] filter dup [ "href" attr >url ] when ;
[ "href" attr >url ] map ;
: atom-link ( tag rel -- url/f )
atom-links [ f ] [ first ] if-empty ;
: atom1.0-entry ( tag -- entry ) : atom1.0-entry ( tag -- entry )
<entry> swap { <entry> swap {
[ "title" tag-named children>string >>title ] [ "title" tag-named children>string >>title ]
[ "alternate" atom-link >>url ] [ atom-entry-link >>url ]
[ [
{ "content" "summary" } any-tag-named { "content" "summary" } any-tag-named
dup children>> [ string? not ] any? dup children>> [ string? not ] any?
@ -92,12 +88,11 @@ TUPLE: entry title url description date ;
} cleave ; } cleave ;
: atom1.0 ( xml -- feed ) : atom1.0 ( xml -- feed )
<feed> swap { <feed> swap
[ "title" tag-named children>string >>title ] [ "title" tag-named children>string >>title ]
[ "alternate" atom-link >>url ] [ "link" tag-named "href" attr >url >>url ]
[ "hub" atom-links >>hubs ] [ "entry" tags-named [ atom1.0-entry ] map set-entries ]
[ "entry" tags-named [ atom1.0-entry ] map set-entries ] tri ;
} cleave ;
: xml>feed ( xml -- feed ) : xml>feed ( xml -- feed )
dup main>> { dup main>> {
@ -134,21 +129,14 @@ M: byte-array parse-feed [ bytes>xml xml>feed ] with-html-entities ;
</entry> </entry>
XML] ; XML] ;
: hub>xml ( hub -- xml )
present [XML <link rel="hub" href=<-> /> XML] ;
: feed>xml ( feed -- xml ) : feed>xml ( feed -- xml )
{ [ title>> ]
[ title>> ] [ url>> present ]
[ url>> present ] [ entries>> [ entry>xml ] map ] tri
[ hubs>> [ hub>xml ] map ]
[ entries>> [ entry>xml ] map ]
} cleave
<XML <XML
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<title><-></title> <title><-></title>
<link href=<-> /> <link href=<-> />
<-> <->
<->
</feed> </feed>
XML> ; XML> ;

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel accessors sequences sorting math math.order USING: kernel accessors sequences sorting math math.order
calendar timers logging concurrency.combinators namespaces calendar timers logging concurrency.combinators namespaces
db.types db.tuples db fry locals hashtables continuations db.types db.tuples db fry locals hashtables
syndication urls xml.writer validators syndication urls xml.writer validators
html.forms html.forms
html.components html.components
@ -15,8 +15,7 @@ furnace.redirection
furnace.boilerplate furnace.boilerplate
furnace.auth.login furnace.auth.login
furnace.auth furnace.auth
furnace.syndication furnace.syndication ;
syndication.pubsubhubbub ;
IN: webapps.planet IN: webapps.planet
TUPLE: planet < dispatcher ; TUPLE: planet < dispatcher ;
@ -52,9 +51,6 @@ posting "POSTINGS"
{ "date" "DATE" TIMESTAMP +not-null+ } { "date" "DATE" TIMESTAMP +not-null+ }
} define-persistent } define-persistent
CONSTANT: hubs { { URL" http://pubsubhubbub.appspot.com/"
URL" http://pubsubhubbub.appspot.com/publish" } }
: <blog> ( id -- todo ) : <blog> ( id -- todo )
blog new blog new
swap >>id ; swap >>id ;
@ -63,12 +59,9 @@ CONSTANT: hubs { { URL" http://pubsubhubbub.appspot.com/"
f <blog> select-tuples f <blog> select-tuples
[ name>> ] sort-with ; [ name>> ] sort-with ;
: sort-postings ( seq -- seq )
[ date>> ] inv-sort-with ;
: postings ( -- seq ) : postings ( -- seq )
posting new select-tuples posting new select-tuples
sort-postings ; [ date>> ] inv-sort-with ;
: <edit-blogroll-action> ( -- action ) : <edit-blogroll-action> ( -- action )
<page-action> <page-action>
@ -84,19 +77,10 @@ CONSTANT: hubs { { URL" http://pubsubhubbub.appspot.com/"
{ planet "planet" } >>template ; { planet "planet" } >>template ;
: hubs-urls ( -- seq )
hubs [ first ] map ;
: ping-hubs ( -- )
{ URL" http://planet.factorcode.org/feed.xml" }
hubs [ second ] map
[ [ ping ] [ 3drop ] recover ] with each ;
: <planet-feed-action> ( -- action ) : <planet-feed-action> ( -- action )
<feed-action> <feed-action>
[ "Planet Factor" ] >>title [ "Planet Factor" ] >>title
[ URL" $planet" ] >>url [ URL" $planet" ] >>url
[ hubs-urls ] >>hubs
[ postings ] >>entries ; [ postings ] >>entries ;
:: <posting> ( entry name -- entry' ) :: <posting> ( entry name -- entry' )
@ -118,16 +102,12 @@ CONSTANT: hubs { { URL" http://pubsubhubbub.appspot.com/"
: sort-entries ( entries -- entries' ) : sort-entries ( entries -- entries' )
[ date>> ] inv-sort-with ; [ date>> ] inv-sort-with ;
: set-cached-postings ( seq -- ) : update-cached-postings ( -- )
[ blogroll fetch-blogroll sort-entries 8 short head [
posting new delete-tuples posting new delete-tuples
[ insert-tuple ] each [ insert-tuple ] each
] with-transaction ; ] with-transaction ;
: update-cached-postings ( -- )
blogroll fetch-blogroll sort-entries 8 short head sort-postings
dup postings = [ drop ] [ set-cached-postings ping-hubs ] if ;
: <update-action> ( -- action ) : <update-action> ( -- action )
<action> <action>
[ [