diff options
author | zach <zach@controlyourself.ca> | 2008-08-19 15:46:10 -0400 |
---|---|---|
committer | zach <zach@controlyourself.ca> | 2008-08-19 15:46:10 -0400 |
commit | 55f5bea21ebb29266c4a4c8068057928fa4504bf (patch) | |
tree | 58fcccef14f04718f667adc3fb652af04475d372 | |
parent | e440b9cea02549032ba4f79c43964219dea23d82 (diff) |
Twitter-compatible API - /statuses/destroy method implemented
darcs-hash:20080819194610-462f3-eb736e4cfc817b479e1e8e52db03b5f44cdb3d2a.gz
-rw-r--r-- | actions/twitapistatuses.php | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index 66d3737fd..2dcff985c 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -571,7 +571,42 @@ class TwitapistatusesAction extends TwitterapiAction { function destroy($args, $apidata) { parent::handle($args); - common_server_error("API method under construction.", $code=501); + + common_debug($_SERVER['REQUEST_METHOD']); + + // Check for RESTfulness + if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { + // XXX: Twitter just prints the err msg, no XML / JSON. + $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); + exit(); + } + + $user = $apidata['user']; + $notice_id = $apidata['api_arg']; + $notice = Notice::staticGet($notice_id); + + if (!$notice) { + $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']); + exit(); + } + + if ($user->id == $notice->profile_id) { + $replies = new Reply; + $replies->get('notice_id', $notice_id); + common_dequeue_notice($notice); + $replies->delete(); + $notice->delete(); + + if ($apidata['content-type'] == 'xml') { + $this->show_single_xml_status($notice); + } elseif ($apidata['content-type'] == 'json') { + $this->show_single_json_status($notice); + } + } else { + $this->client_error(_('You may not delete another user\'s status.'), 403, $apidata['content-type']); + } + + exit(); } # User Methods |