summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzach <zach@controlyourself.ca>2008-08-19 15:46:10 -0400
committerzach <zach@controlyourself.ca>2008-08-19 15:46:10 -0400
commit55f5bea21ebb29266c4a4c8068057928fa4504bf (patch)
tree58fcccef14f04718f667adc3fb652af04475d372
parente440b9cea02549032ba4f79c43964219dea23d82 (diff)
Twitter-compatible API - /statuses/destroy method implemented
darcs-hash:20080819194610-462f3-eb736e4cfc817b479e1e8e52db03b5f44cdb3d2a.gz
-rw-r--r--actions/twitapistatuses.php37
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