add SUP links to RSS and Atom, too

darcs-hash:20081026145326-5ed1f-430b98eedef21903caaae47e3355482ae7bfa616.gz
This commit is contained in:
Evan Prodromou 2008-10-26 10:53:26 -04:00
parent 6503fd72e1
commit 90e4512df2
2 changed files with 23 additions and 4 deletions

View File

@ -191,6 +191,12 @@ class TwitapistatusesAction extends TwitterapiAction {
$link = common_local_url('showstream', array('nickname' => $user->nickname)); $link = common_local_url('showstream', array('nickname' => $user->nickname));
$subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename); $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename);
# FriendFeed's SUP protocol
# Also added RSS and Atom feeds
$suplink = common_local_url('sup', NULL, $user->id);
header('X-SUP-ID: '.$suplink);
# XXX: since # XXX: since
$notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id); $notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id);
@ -200,10 +206,10 @@ class TwitapistatusesAction extends TwitterapiAction {
$this->show_xml_timeline($notice); $this->show_xml_timeline($notice);
break; break;
case 'rss': case 'rss':
$this->show_rss_timeline($notice, $title, $id, $link, $subtitle); $this->show_rss_timeline($notice, $title, $id, $link, $subtitle, $suplink);
break; break;
case 'atom': case 'atom':
$this->show_atom_timeline($notice, $title, $id, $link, $subtitle); $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink);
break; break;
case 'json': case 'json':
$this->show_json_timeline($notice); $this->show_json_timeline($notice);

View File

@ -259,13 +259,20 @@ class TwitterapiAction extends Action {
$this->end_document('xml'); $this->end_document('xml');
} }
function show_rss_timeline($notice, $title, $link, $subtitle) { function show_rss_timeline($notice, $title, $link, $subtitle, $suplink=NULL) {
$this->init_document('rss'); $this->init_document('rss');
common_element_start('channel'); common_element_start('channel');
common_element('title', NULL, $title); common_element('title', NULL, $title);
common_element('link', NULL, $link); common_element('link', NULL, $link);
if (!is_null($suplink)) {
# For FriendFeed's SUP protocol
common_element('link', array('xmlns' => 'http://www.w3.org/2005/Atom',
'rel' => 'http://api.friendfeed.com/2008/03#sup',
'href' => $suplink,
'type' => 'application/json'));
}
common_element('description', NULL, $subtitle); common_element('description', NULL, $subtitle);
common_element('language', NULL, 'en-us'); common_element('language', NULL, 'en-us');
common_element('ttl', NULL, '40'); common_element('ttl', NULL, '40');
@ -287,13 +294,19 @@ class TwitterapiAction extends Action {
$this->end_twitter_rss(); $this->end_twitter_rss();
} }
function show_atom_timeline($notice, $title, $id, $link, $subtitle=NULL) { function show_atom_timeline($notice, $title, $id, $link, $subtitle=NULL, $suplink=NULL) {
$this->init_document('atom'); $this->init_document('atom');
common_element('title', NULL, $title); common_element('title', NULL, $title);
common_element('id', NULL, $id); common_element('id', NULL, $id);
common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL);
if (!is_null($suplink)) {
# For FriendFeed's SUP protocol
common_element('link', array('rel' => 'http://api.friendfeed.com/2008/03#sup',
'href' => $suplink,
'type' => 'application/json'));
}
common_element('subtitle', NULL, $subtitle); common_element('subtitle', NULL, $subtitle);
if (is_array($notice)) { if (is_array($notice)) {