diff --git a/actions/twitapifriendships.php b/actions/twitapifriendships.php index a8de77107a..1ea8199e9c 100644 --- a/actions/twitapifriendships.php +++ b/actions/twitapifriendships.php @@ -32,6 +32,7 @@ class TwitapifriendshipsAction extends TwitterapiAction { if (!$other) { $this->client_error(_('No such user')); + exit(); return; } @@ -39,6 +40,7 @@ class TwitapifriendshipsAction extends TwitterapiAction { if ($user->isSubscribed($other)) { $this->client_error(_('Already subscribed.')); + exit(); return; } @@ -50,14 +52,16 @@ class TwitapifriendshipsAction extends TwitterapiAction { if (!$result) { $this->server_error(_('Could not subscribe')); + exit(); return; } mail_subscribe_notify($other, $user); - common_start_xml(); + $type = $apidata['content-type']; + $this->init_document($type); $this->show_profile($other); - common_end_xml(); + $this->end_document($type); exit(); } @@ -90,9 +94,10 @@ class TwitapifriendshipsAction extends TwitterapiAction { $sub->delete(); } - common_start_xml(); + $type = $apidata['content-type']; + $this->init_document($type); $this->show_profile($other); - common_end_xml(); + $this->end_document($type); exit(); } diff --git a/lib/twitterapi.php b/lib/twitterapi.php index b8640fa590..f61ba9b671 100644 --- a/lib/twitterapi.php +++ b/lib/twitterapi.php @@ -202,6 +202,48 @@ class TwitterapiAction extends Action { return NULL; } + + function init_document($type='xml') { + switch ($type) { + case 'xml': + header('Content-Type: application/xml; charset=utf-8'); + common_start_xml(); + break; + case 'json': + header('Content-Type: application/json; charset=utf-8'); + break; + case 'rss': + header("Content-Type: application/rss+xml; charset=utf-8"); + $this->init_twitter_rss(); + break; + case 'atom': + header('Content-Type: application/atom+xml; charset=utf-8'); + $this->init_twitter_atom(); + break; + default: + $this->client_error(_('Unsupported type')); + break; + } + } + + function end_document($type='xml') { + switch ($type) { + case 'xml': + common_end_xml(); + break; + case 'json': + break; + case 'rss': + $this->end_twitter_rss(); + break; + case 'atom': + $this->end_twitter_rss(); + break; + default: + $this->client_error(_('Unsupported type')); + break; + } + } function init_twitter_rss() { common_start_xml();