summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/twitapifriendships.php13
-rw-r--r--lib/twitterapi.php42
2 files changed, 51 insertions, 4 deletions
diff --git a/actions/twitapifriendships.php b/actions/twitapifriendships.php
index a8de77107..1ea8199e9 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 b8640fa59..f61ba9b67 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();