diff options
author | zach <zach@copley.name> | 2008-08-15 14:53:17 -0400 |
---|---|---|
committer | zach <zach@copley.name> | 2008-08-15 14:53:17 -0400 |
commit | 35d17146213228445b0f30548aca01c9e1a71154 (patch) | |
tree | 3fb1cd320e7f69a3a55b984cdac97a06b943aac5 | |
parent | a95242bd1d59d87481bb56c9451a348361fc2350 (diff) |
Twitter-compatible API: support for new in_reply_to_status_id in statuses/update
darcs-hash:20080815185317-ca946-11c3f9f7255180d5d6ea7b115b3e33b2abb7fe93.gz
-rw-r--r-- | actions/twitapistatuses.php | 24 | ||||
-rw-r--r-- | classes/Notice.php | 3 | ||||
-rw-r--r-- | lib/twitterapi.php | 4 |
3 files changed, 24 insertions, 7 deletions
diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index b2bbb16f0..3f9e93073 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -375,9 +375,9 @@ class TwitapistatusesAction extends TwitterapiAction { parent::handle($args); $user = $apidata['user']; - $status = $this->trimmed('status'); $source = $this->trimmed('source'); + $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id')); if (!$source) { $source = 'api'; @@ -397,16 +397,30 @@ class TwitapistatusesAction extends TwitterapiAction { // as "truncated." Sending this error may screw up some clients // that assume Twitter will truncate for them. Should we just // truncate too? -- Zach - header('HTTP/1.1 406 Not Acceptable'); - print "That's too long. Max notice size is 140 chars.\n"; + $this->client_error('That\'s too long. Max notice size is 140 chars.', $code = 406, $apidata['content-type']); exit(); } - $notice = Notice::saveNew($user->id, $status, $source); + $reply_to = NULL; + + if ($in_reply_to_status_id) { + + // check whether notice actually exists + $reply = Notice::staticGet($in_reply_to_status_id); + + if ($reply) { + $reply_to = $in_reply_to_status_id; + } else { + $this->client_error('Not found', $code = 404, $apidata['content-type']); + exit(); + } + } + + $notice = Notice::saveNew($user->id, $status, $source, 1, $reply_to); if (is_string($notice)) { $this->server_error($notice); - return; + exit(); } common_broadcast_notice($notice); diff --git a/classes/Notice.php b/classes/Notice.php index cb220394d..6aa8e375b 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -76,11 +76,12 @@ class Notice extends DB_DataObject return true; } - static function saveNew($profile_id, $content, $source=NULL, $is_local=1) { + static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL) { $notice = new Notice(); $notice->profile_id = $profile_id; $notice->is_local = $is_local; + $notice->reply_to = $reply_to; $notice->created = DB_DataObject_Cast::dateTime(); $notice->content = $content; $notice->rendered = common_render_content($notice->content, $notice); diff --git a/lib/twitterapi.php b/lib/twitterapi.php index 30d5bba23..8b4c24cab 100644 --- a/lib/twitterapi.php +++ b/lib/twitterapi.php @@ -158,13 +158,15 @@ class TwitterapiAction extends Action { $notice = Notice::staticGet($id); if ($notice) { - if ($apidata['content-type'] == 'xml') { $this->show_single_xml_status($notice); } elseif ($apidata['content-type'] == 'json') { $this->show_single_json_status($notice); } } else { + + // XXX: This is all that Twitter does. It doesn't show an XML or JSON error msg. + // Should we call client_error() to be more consistent? header('HTTP/1.1 404 Not Found'); } |