From 877eb138c4a793cb065e9575e4f31469caf86b36 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 22 Jul 2008 14:29:19 -0400 Subject: [PATCH] Twitter-compatible API: made is_readonly() method smarter darcs-hash:20080722182919-ca946-dce04d84290711066154567458da2dd3253dd957.gz --- actions/twitapiaccount.php | 12 +++++++++++- actions/twitapifriendships.php | 14 ++++++++++++++ actions/twitapistatuses.php | 17 +++++++++++++++-- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/actions/twitapiaccount.php b/actions/twitapiaccount.php index a43d1edbad..0a57ad91c3 100644 --- a/actions/twitapiaccount.php +++ b/actions/twitapiaccount.php @@ -24,7 +24,17 @@ require_once(INSTALLDIR.'/lib/twitterapi.php'); class TwitapiaccountAction extends TwitterapiAction { function is_readonly() { - return false; + + static $write_methods = array( 'update_location', + 'update_delivery_device'); + + $cmdtext = explode('.', $this->arg('method')); + + if (in_array($cmdtext[0], $write_methods)) { + return false; + } + + return true; } function verify_credentials($args, $apidata) { diff --git a/actions/twitapifriendships.php b/actions/twitapifriendships.php index 19bc71b7af..05c192ea6f 100644 --- a/actions/twitapifriendships.php +++ b/actions/twitapifriendships.php @@ -23,6 +23,20 @@ require_once(INSTALLDIR.'/lib/twitterapi.php'); class TwitapifriendshipsAction extends TwitterapiAction { + function is_readonly() { + + static $write_methods = array( 'create', + 'destroy'); + + $cmdtext = explode('.', $this->arg('method')); + + if (in_array($cmdtext[0], $write_methods)) { + return false; + } + + return true; + } + function create($args, $apidata) { parent::handle($args); diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index 3a06d146c7..30f2e514af 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -28,12 +28,22 @@ require_once(INSTALLDIR.'/lib/twitterapi.php'); class TwitapistatusesAction extends TwitterapiAction { function is_readonly() { - return false; + + static $write_methods = array( 'update', + 'destroy'); + + $cmdtext = explode('.', $this->arg('method')); + + if (in_array($cmdtext[0], $write_methods)) { + return false; + } + + return true; } function public_timeline($args, $apidata) { parent::handle($args); - + $sitename = common_config('site', 'name'); $siteserver = common_config('site', 'server'); $title = sprintf(_("%s public timeline"), $sitename); @@ -365,6 +375,9 @@ class TwitapistatusesAction extends TwitterapiAction { $user = $apidata['user']; + $this->is_readonly(); + + $notice = DB_DataObject::factory('notice'); $notice->profile_id = $user->id; # user id *is* profile id