show a single notice in atom entry format

This commit is contained in:
Evan Prodromou 2010-10-24 15:58:53 -04:00
parent 69a1ecec9b
commit 43a67b150a
3 changed files with 20 additions and 6 deletions

View File

@ -105,8 +105,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
{ {
parent::handle($args); parent::handle($args);
if (!in_array($this->format, array('xml', 'json'))) { if (!in_array($this->format, array('xml', 'json', 'atom'))) {
$this->clientError(_('API method not found.'), $code = 404); $this->clientError(_('API method not found.'), 404);
return; return;
} }
@ -122,10 +122,18 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
function showNotice() function showNotice()
{ {
if (!empty($this->notice)) { if (!empty($this->notice)) {
if ($this->format == 'xml') { switch ($this->format) {
case 'xml':
$this->showSingleXmlStatus($this->notice); $this->showSingleXmlStatus($this->notice);
} elseif ($this->format == 'json') { break;
case 'json':
$this->show_single_json_status($this->notice); $this->show_single_json_status($this->notice);
break;
case 'atom':
$this->showSingleAtomStatus($this->notice);
break;
default:
throw new Exception(sprintf(_("Unsupported format: %s"), $this->format));
} }
} else { } else {

View File

@ -726,6 +726,12 @@ class ApiAction extends Action
$this->endDocument('xml'); $this->endDocument('xml');
} }
function showSingleAtomStatus($notice)
{
header('Content-Type: application/atom+xml; charset=utf-8');
print $notice->asAtomEntry(true, true, true, $this->auth_user);
}
function show_single_json_status($notice) function show_single_json_status($notice)
{ {
$this->initDocument('json'); $this->initDocument('json');

View File

@ -399,12 +399,12 @@ class Router
$m->connect('api/statuses/show.:format', $m->connect('api/statuses/show.:format',
array('action' => 'ApiStatusesShow', array('action' => 'ApiStatusesShow',
'format' => '(xml|json)')); 'format' => '(xml|json|atom)'));
$m->connect('api/statuses/show/:id.:format', $m->connect('api/statuses/show/:id.:format',
array('action' => 'ApiStatusesShow', array('action' => 'ApiStatusesShow',
'id' => '[0-9]+', 'id' => '[0-9]+',
'format' => '(xml|json)')); 'format' => '(xml|json|atom)'));
$m->connect('api/statuses/update.:format', $m->connect('api/statuses/update.:format',
array('action' => 'ApiStatusesUpdate', array('action' => 'ApiStatusesUpdate',