summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-10-24 15:58:53 -0400
committerEvan Prodromou <evan@status.net>2010-10-24 15:58:53 -0400
commit43a67b150a4e4285224ccf695171df731c736a1e (patch)
tree0988e83d344c0a27570dc2c09db527817df670f9
parent69a1ecec9b4b7168fb570d2d07bcfaa0f29fc856 (diff)
show a single notice in atom entry format
-rw-r--r--actions/apistatusesshow.php16
-rw-r--r--lib/apiaction.php6
-rw-r--r--lib/router.php4
3 files changed, 20 insertions, 6 deletions
diff --git a/actions/apistatusesshow.php b/actions/apistatusesshow.php
index 84f8079db..c0eab15a4 100644
--- a/actions/apistatusesshow.php
+++ b/actions/apistatusesshow.php
@@ -105,8 +105,8 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
{
parent::handle($args);
- if (!in_array($this->format, array('xml', 'json'))) {
- $this->clientError(_('API method not found.'), $code = 404);
+ if (!in_array($this->format, array('xml', 'json', 'atom'))) {
+ $this->clientError(_('API method not found.'), 404);
return;
}
@@ -122,10 +122,18 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
function showNotice()
{
if (!empty($this->notice)) {
- if ($this->format == 'xml') {
+ switch ($this->format) {
+ case 'xml':
$this->showSingleXmlStatus($this->notice);
- } elseif ($this->format == 'json') {
+ break;
+ case 'json':
$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 {
diff --git a/lib/apiaction.php b/lib/apiaction.php
index 4e9dbb310..8a7be3150 100644
--- a/lib/apiaction.php
+++ b/lib/apiaction.php
@@ -726,6 +726,12 @@ class ApiAction extends Action
$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)
{
$this->initDocument('json');
diff --git a/lib/router.php b/lib/router.php
index 9aaac7dfe..834445f09 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -399,12 +399,12 @@ class Router
$m->connect('api/statuses/show.:format',
array('action' => 'ApiStatusesShow',
- 'format' => '(xml|json)'));
+ 'format' => '(xml|json|atom)'));
$m->connect('api/statuses/show/:id.:format',
array('action' => 'ApiStatusesShow',
'id' => '[0-9]+',
- 'format' => '(xml|json)'));
+ 'format' => '(xml|json|atom)'));
$m->connect('api/statuses/update.:format',
array('action' => 'ApiStatusesUpdate',