From 877eb138c4a793cb065e9575e4f31469caf86b36 Mon Sep 17 00:00:00 2001
From: zach <zach@copley.name>
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
-- 
2.39.5